检测字符串中的 Unicode 字符

Detect Unicode Character in string

本文关键字:Unicode 字符 字符串 检测      更新时间:2023-10-16

我有字符串输入。我想检查所有字符并提示用户输入字符串中是否有任何 Unicode 字符。

如何在C++中进行此验证。

例如。在记事本中,如果您输入任何 Unicode 字符并尝试使用 ANSI 编码保存它,它将提示 Unicode 字符。我想做类似的验证。

您可以使用 IsTextUnicode 函数。据我所知,这就是记事本使用的功能。

MSDN-Link:http://msdn.microsoft.com/en-us/library/windows/desktop/dd318672%28v=vs.85%29.aspx

只需插入 NULL 作为最后一个参数。

#include <string>
#include <Windows.h>
int main()
{
  std::string s = "Hallo!";
  std::wstring ws = L"Hello!";
  if (::IsTextUnicode(ws.c_str(), ws.length(), NULL) == 1)
  {
    // is unicode
    int i = 0;
  }
  else
  {
    // no unicode
    int i = 1;
  }
  return 0;
}

记事本警告您的内容略有不同:它警告您无法转换为所需代码页的 Unicode 字符。IOW,WideCharToMultiByte(CP_ACP, ..., &lpUsedDefaultChar)会导致lpUsedDefaultChar设置为 TRUE。

CP_ACP替换您想要的编码,除了没有意义的CP_UTF8。UTF8 支持所有 Unicode 字符。

一个简单的方法是允许 Unicode 并将文本存储为 UTF-8。由于 UTF-8 是 ASCII 的超集,因此很容易找到不是 ASCII 的字符(它们设置了高位(。