Linux で iconv() を使用して、文字列が UTF-8 でエンコードされていることを検証するコードが少しあります。私が作成する変換は次のようになります。
iconv_t c = iconv_open("UTF-8","UTF-8");
次のように iconv() を実行します。
int status = iconv(c, &fromArray, (size_t*)&inSize, &toArray, (size_t*)&outSize);
status
次に、 -1 でない場合、有効な UTF-8 を持つ文字列を取得します。
これは、32 ビット環境 (最初に開発およびテストされた場所) でコンパイルおよび正常に動作します。ただし、これを64ビット環境で機能させる必要があります(具体的には、Fedora 14の64ビットフレーバーだと思います)。これでコンパイルしてテストを実行すると、32ビットコンパイルが問題ないと言っている同じ文字列であっても、常にstatus
エラーが発生します。-1
EILSEQ
errno
なぜこれが起こっているのか、誰にも考えがありますか?