【发布时间】:2017-02-15 10:22:15
【问题描述】:
有一个 csv 文件,其中有许多以 utf-8 编码的不同语言。我必须解析文件并验证无效字符。 我已经编写了一个示例程序,如下所示……
int main(void)
{
string invalidUTF8Chars = ""; // Invalid UTF-8 Chars array.
invalidUTF8Chars+= "\u00A0";
invalidUTF8Chars+= "\u005E";
invalidUTF8Chars+= "\u00FE";
invalidUTF8Chars+= "\u00BA";
invalidUTF8Chars+= "\u00AF";
FILE* fp;
char ch;
fp = fopen("unicodeUTF8TextFile.txt","r");
if(fp != NULL)
{
while(( ch = fgetc(fp) ) != EOF ) // Reading byte by byte form input file.
{
//if (strchr(invalidUTF8Chars.c_str(), ch)) // How do I validate here?
{
printf("Invalid character\n");
}
}
}
return 0;
}
如何比较从文件中读取的数据和无效字符?
【问题讨论】:
-
char ch;是一个巨大的错误;请在继续之前仔细研究API。 -
string invalidUTF8Chars = "";不是数组。它只是一个包含所有无效“字符”的字符串。 -
如果你真的想要 UTF-8,你的文字应该是
u8"\u00A0"等形式。您当前的代码不使用 UTF-8,而是使用系统的窄编码(可能相同也可能不同)。 -
@KerrekSB 说应该是
int,以便为 EOF 留出空间。 -
@LightnessRacesinOrbit:如何比较 utf8 字符?