tvr*_*tvr 2 windows unicode winapi mfc
我想了解WideCharToMultiByte,我想知道什么时候lpUsedDefaultChar会被设置为TRUE.
这是一个示例:为了将标志设置为true,lpszW应该是什么?
lpszW = L”__WHAT SHOULD_BE_HERE__”;
int c = ??;
BOOL fUsedDefaultChar = false;
DWORD dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, c, myOutStr ,myOutLen, NULL, &fUsedDefaultChar);
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx
任何理解Unicode/UTF内容的书籍/教程都会很棒.
谢谢!
当前代码页中没有的任何内容都会映射到?(默认情况下)和UsedDefaultChar将是!= FALSE.
Windows-1252可能是最常见的代码页,其中大多数字符在unicode中映射到相同的值.
以Ω(ohm)为例,它可能不存在于您当前的代码页中,因此不会映射到有效的窄字符:
BOOL fUsedDefaultChar=FALSE;
DWORD dwSize;
char myOutStr[MAX_PATH];
WCHAR lpszW[10]=L"Hello";
*lpszW=0x2126; //ohm sign, you could also use the \u2126 syntax if your compiler supports it.
dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, -1, myOutStr ,MAX_PATH, NULL, &fUsedDefaultChar);
printf("%d %s\n",fUsedDefaultChar,myOutStr); //This prints "1 ?ello" on my system
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |