处理utf8编码的char *数组

时间:2017-02-14 10:29:47

标签: c++ unix suncc

文件包含非拉丁语内容,并以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

1 个答案:

答案 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不使用宽代码单元。