文件包含非拉丁语内容,并以UTF8编码。
目前,现有代码使用" fopen
"打开文件,解析它并使用非拉丁内容调用我的validate
函数,并将数据传递为char*
。
void validate(const char* str)
{
....
}
我必须对传递的char
数组进行一些验证。
该应用程序使用Sun C++ 5.11
,我认为它不支持unicode
。 (我在Sun C ++ 5.11上搜索unicode支持,我没有得到关于unicode支持的任何正确指示。所以我写了一个简单的程序来检查Sun C ++是否支持unicode并且程序没有编译)。
如何对输入char*
进行验证?是否可以使用wchar_t
?
答案 0 :(得分:1)
该应用程序使用
<compiler>
,我认为它不支持unicode
这不是问题。您只需要编译器支持unicode在代码中嵌入unicode字符串文字,或者需要固定宽度字符类型来表示UTF-16或UTF-32。您的unicode是UTF-8,来自用户输入,因此不需要unicode编译器支持。
如何对输入
char*
进行验证?
C ++标准库几乎没有用于处理unicode的工具。提供的工具主要包括不同unicode格式之间的转换,甚至在C ++ 11之前也没有这些工具。
输入和输出主要是复制字节,因此不需要进行大量处理。对于其他处理(您可能需要进行&#34;验证&#34;),您需要自己实施这些工具,或使用第三方工具。如果您选择自己实施,则需要参考unicode标准的~1000页:http://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf
是否可以使用
wchar_t
?
wchar_t
是本机宽字符类型,用于系统的本机宽字符编码。 UTF-8不使用宽代码单元。