utf-8で多くの異なる言語がエンコードされたcsvファイルがあります。私はファイルを解析し、無効な文字を検証する必要があります。示されているよう 私は下のサンプルプログラムを書かれている...UTF8でエンコードされた文字の比較
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 =" ";'は配列ではありません。すべての無効な "文字"を含む文字列です。 – user1810087
実際にUTF-8が必要な場合、リテラルは 'u8" \ u00A0 "'などの形式にする必要があります。あなたの現在のコードはUTF-8を使用せず、むしろシステムの狭いエンコーディング(同じであってもなくてもよい)を使用します。 –