0

電子メール クライアントのコンテキストでは、さまざまな文字セットと Unicode を相互に変換する必要があります。これまでのところ、Windows と Linux では、iconv を使用して文字セット間のテキスト変換を行ってきました。しかし、Mac で最初に試みた cp932 から utf-16 への変換は、大量のゴミ文字で失敗しました。私はグーグルを持っていて、setlocaleを使って最初にロケールを設定することを提案している人もいましたが、それは物事に影響を与えていないようでした.

Macでiconvを使用するべきではないのでしょうか?文字セット変換用の代替 API はありますか?

iconv コードの修正に関する提案も受け付けています...コードは基本的に次の行に沿っています。

setlocale(LC_ALL,"");

iconv_t Conv;
if ((Conv = libiconv_open("utf-16", "cp932")) >= 0)
{
    // Convert
    int s = libiconv(Conv, &InBuf, (size_t*)&InLen, &OutBuf, (size_t*)&OutLen);
    libiconv_close(Conv);
}

Windows では同じ入力テキストが正常に機能しますが、Mac ではゴミが表示されます。

4

1 に答える 1

2

CFString ( -framework CoreFoundation) には文字変換 ​​API があります。基本的に、CP932 () 文字列から CFString を作成すると、そこからkCFStringEncodingDOSJapaneseUTF-16 データを抽出できます。

詳細はこちら

于 2010-12-06T05:03:03.710 に答える