2008年3月22日の日記の1番目の記事へのコメント
■Pidgin
最新のyazさんパッチを当ててWindows版をビルドしてみました.大体よさそうかと思いきや,Windows版のPidginから「~」のみを送ると,送り出す時点で「~」に置換されちゃうという問題が.「あ~」のように,非Latin1文字と混ぜて送ると平気だったりします.何だこりゃ.
調べてみたら,どうも「~」単体だと,oscar.c の purple_plugin_oscar_convert_to_best_encoding の中で,
*msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL);
で UTF-8 から ISO-8859-1 に変換できてしまう模様・・・.なんでー?Linuxだと発生しないので,Windows固有の現象なんですかね.もしやと思って全角アルファベットや全角数字を突っ込んでみたら,こちらも半角に変換されて送り届けられました.うわー・・・ナニコレ・・・.
とりあえずこんなことして回避してみましたが,なんだかなぁ.
@@ -551,8 +552,10 @@ * XXX - We need a way to only attempt to convert if we KNOW "from" * can be converted to "charsetstr" */ - *msg = g_convert(from, -1, charsetstr, "UTF-8", NULL, &msglen, NULL); - if (*msg != NULL) { + *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL); + if (*msg != NULL && !(strcmp(charsetstr, "ISO-8859-1") == 0 + && strlen(*msg) != strlen(from))) { *charset = AIM_CHARSET_CUSTOM; *charsubset = 0x0000; *msglen_int = msglen;
[コメントを書く]
2008年3月22日の日記の1番目の記事へのコメント
http://ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5
ご助言,ありがとうございます.
> これは波ダッシュ問題ですね。
発見当初,それも考えたんですが,Unicodeの波ダッシュ問題だとすると
> 全角アルファベットや全角数字を突っ込んでみたら,
> こちらも半角に変換されて送り届けられました.
が説明できないんですよね・・・.
今日,yazさんにお手伝い頂いて色々調べてみたところ,どうも GNU
libiconvでいうところの,変換先のコードを「ISO-8859-1//TRANSLIT」と
した場合と同じ現象が発生してしまっているようです.
詳細は後ほど今日のエントリに書く予定です.