走进windows编程的世界-----字符编码
2020-12-13 02:30
标签:字符编码 unicode 多字节 0=127 7位表示 0—255 8为表示。 代码页:通过代码也来切换对应的字符(数字表示) 使用一个或两个字节表示字符。 全部使用2个字节表示字符 内存 硬盘等资源占用变大。对编码支持度大。 字符集 Char cText = ‘A’; Char * pszText =“ABCD” Wchar_t cText = ‘A’; Wchar_t *pszText= L”ABCD” 为了程序中可以方便的支持宽字节和多字节字符,使用TCHAR 来定义,基本实现思路如下。 #ifndef _UNICODE typedef char TCHAR #define _T(x) x #else typedefwchar_t TCHAR #define _t(x) L##x //## 连¢?接¨®符¤? #endif 将Unicode 字符串输出到控制台上。参考资料:http://blog.sina.com.cn/s/blog_4e3197f20100a7v3.html 同样,Windows控制台也是标准的UNICODE系统功能,也有xxxA,xxxW两种对其操作的Win32 API,下面以WriteConsole为例。它也存在WriteConsoleA和WriteConsoleW两上版本,但我们在MSDN中找不到这两个原型型,可以在C:\ProgramFiles\Microsoft Visual Studio\VC98\Include\WINCON.H在可以发现它的定义,并可以发现对它们进行控制的预定义语句。 #ifdefUNICODE #defineWriteConsole WriteConsoleW #else #defineWriteConsole WriteConsoleA #endif 走进windows编程的世界-----字符编码,搜素材,soscw.com 走进windows编程的世界-----字符编码 标签:字符编码 unicode 多字节 原文地址:http://blog.csdn.net/sjin_1314/article/details/284548751 字符编码
1.1编码的历史
1.1.1ASCII码
1.1.2ASCII扩展码
1.1.3双字节字符集DBCS
1.1.4Unicode编码
1.2C 语言和编码
1.2.1单字节的字符和字符串
void ASCII()
{
char ctext = 0;
for( int nindex = 0; nindex
void CoadPage(int nCodePage)
{
SetConsoleOutputCP(nCodePage);
char ctext = 0;
for( int nindex = 0; nindex
1.2.2宽字节的字符
void C_wchar()
{
wchar_t cText = ‘A‘;
wchar_t *pszText = L"ABCD"; /*双字节Uncode字符*/
int nlen = wcslen(pszText);
/*只能打印出A来,无法打印全*/
printf("%s\n",pszText);
/*可打印完成的字符串*/
wprintf(L"%s,len = %d\n",pszText,nlen);
/*多字节字符*/
char * pszChs = "我是程序员";
nlen = strlen(pszChs);
printf("%s,len=%d",pszChs,nlen);
}
1.2.3定义通用字符函数
void tchat()
{
TCHAR * pszText = __T("我是程序员");
#ifndef _UNICODE
int nLen = strlen(pszText);
#else
int nLen = wcslen(pszText);
#endif
}
1.1.1Unicode的控制台打印
void PrintUnicode()
{
/*根据需要获取的句柄类型设置参数为
* STD_INPUT_HANDLE(标准输入句柄)
* STD_OUPUT_HANDLE(标准输出句柄)
* STD_ERROR_HANDLE(标准错误句柄),
* 函数返回值。句柄值。
*/
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
wchar_t * pszText = L"我是程序员\n";
/*
*BOOL WINAPI WriteConsole(
* HANDLE hConsoleOutput, 控制台句柄,应该为标准输出句柄
*
* const VOID* lpBuffer,输出的内容的指针
*
* DOWRD nNUmberOfCharsToWrite,输出的字符的数量
*
* DOWRD lpNumberOfCharsWritten 输出参数,用于返回实际输出的字符数
*
* LPVOID lpReserved);保留参数,必须设置为NULL
*/
WriteConsoleW(hOut,pszText,wcslen(pszText),NULL,NULL);
}
下一篇:python基础四