現在、UTF-16でエンコードされたCSVファイルをcharごとに読み取り、各charをasciiに変換して処理できるようにしようとしています。後で、処理したデータをUTF-16に戻す予定ですが、それは今のところ重要ではありません。
私はこれまでにこのようなことを試みたことがないので、これを完全に間違って行っていることをすぐに知っています:
int main(void)
{
FILE *fp;
int ch;
if(!(fp = fopen("x.csv", "r"))) return 1;
while(ch != EOF)
{
ch = fgetc(fp);
ch = (wchar_t) ch;
ch = (char) ch;
printf("%c", ch);
}
fclose(fp);
return 0;
}
願わくば、それが何らかの理由で魔法で動くことを望んでいましたが、そうではありませんでした。UTF-16 CSVファイルを読み取ってASCIIに変換するにはどうすればよいですか?私の推測では、各utf-16文字は2バイトであるため(私は思いますか?)、ファイルから一度に2バイトを読み取って、不明なデータ型の変数に変換する必要があります。次に、この変数のビットをチェックして、有効なASCIIであることを確認し、そこから変換する必要があると思いますか?私はこれをどのように行うのかわかりませんが、どんな助けも素晴らしいでしょう。