1

UTF-8 文字列を C/POSIX ロケール文字列に変換しようとしています
UTF-8 文字列は "abc123£" (bash では "abc123\302\243"`) です

  1. iconv_open("", "UTF-8"); // "" はデフォルトのプログラム ロケール、つまり C を意味します
  2. iconv_open("UCS-2LE", "UTF-8");

iconv() は、ケース 1 では EILSEQ を返していますが、ケース 2 では成功しています。

これの理由は何ですか?
また、UTF-8 文字列を「C」ロケール文字列に正常に変換するにはどうすればよいですか。

4

1 に答える 1

1

お使いのCロケールでは、 の文字を持たない文字セット (おそらく US-ASCII) が使用されているため£、文字列を変換すると損失が発生する可能性があります。

于 2013-07-26T15:30:22.633 に答える