我有字符串输入。我想检查所有字符并提示用户输入字符串中是否有任何Unicode字符。
如何在C ++中进行此验证。
例如。在记事本中,如果输入任何Unicode字符并尝试使用ANSI编码保存它,它将提示有关Unicode字符。我想做类似的验证。
答案 0 :(得分:2)
您可以使用IsTextUnicode函数。据我所知,这是记事本使用的功能。
MSDN链路: 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;
}
答案 1 :(得分:1)
一种简单的方法是允许Unicode并将文本存储为UTF-8。由于UTF-8是ASCII的超集,因此很容易找到不是ASCII的字符(它们具有高位设置)。
答案 2 :(得分:0)
Notepad警告您的情况略有不同:它会警告您无法转换为所需代码页的Unicode字符。 IOW,WideCharToMultiByte(CP_ACP, ..., &lpUsedDefaultChar)
导致lpUsedDefaultChar
设置为TRUE。
将CP_ACP
替换为您想要的编码,但CP_UTF8
除外,这是没有意义的。 UTF8支持所有Unicode字符。