c++ - 如何使用 C++ 或调用 winapi 查找字符是否属于特定代码页

标签 c++ utf-8 codepages codepoint

我们如何找到一个字符是否属于特定的代码页? 或者我们如何确定字符是否适合应用程序当前事件的 IME。

最佳答案

使用 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/

相关文章:

character-encoding - 什么是 ANSI 格式?

php - phpMyAdmin 中的西里尔字母编码 UTF8 - 文本出现乱码

c# - 如何检测键盘输入代码页

c++ - 在新行上拆分字符

c++ - OpenCV - 显着提高播放帧速率

java - 检测字符串中的 IRC 颜色

Perl:将字节序列打包成字符串

linux - 波兰语字符以捷克语显示

c++ - std::condition_variable wait() 和 notify_one() 同步

c++ - 方法调用后字节大小不正确