我们如何找到一个字符是否属于特定的代码页? 或者我们如何确定字符是否适合应用程序当前事件的 IME。
最佳答案
- 首先,使用 MultiByteToWideChar 将您的 UTF-8 字符串转换为 UTF-16
- 现在,使用 WideCharToMultiByte 逆向过程将所需的代码页作为第一个参数传递。
使用 WC_ERR_INVALID_CHARS
标志,如果使用任何无效字符,WideCharToMultiByte 将彻底失败。如果您想知道目标代码页中未表示哪些字符,请使用 lpDefaultChar 和 lpUsedDefaultChar 参数。
LPCWSTR pszUtf16; // converted from utf8 source character
UINT nTargetCP = CP_ACP;
BOOL fBadCharacter = FALSE;
if(WideCharToMultiByte(nTargetCP,WC_NO_BEST_FIT_CHARS,pszUtf16,NULL,0,NULL,&fBadCharacter)
{
if(fBadCharacter)
{
// at least one character in the string was not represented in nTargetCP
}
}
关于c++ - 如何使用 C++ 或调用 winapi 查找字符是否属于特定代码页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416357/