libiconv-1.9.1 / 1.9.2 に対して、cp932修正/eucJP-ms追加に加えて、独自のエンコーディングとして ISO-2022-JP-ms を追加するパッチのお試し版を作成しました。
http://www2d.biglobe.ne.jp/~msyk/software/libiconv/tmp/libiconv-1.9.1-cp932-family-20040808.patch.gz
http://www2d.biglobe.ne.jp/~msyk/software/libiconv/tmp/libiconv-1.9.2-cp932-family-20040808.patch.gz
ISO-2022-JP-ms は、cp50220 とは異なり、JIS X 0201 片仮名を ESC ( I、ユーザー定義文字を ESC $ ( ? で表現します。
ISO-2022-JP-ms の詳細については、まだ作成していませんが、とりあえずお試し版ということで、パッチだけ公開しておきます。
ISO-2022-JP-ms は Windows-31J(cp932) の全文字(重複文字は一つのコードポイントに集約されます)を、cp932、eucJP-ms、MS版Unicode との間で直接変換可能です。
No.202 | 投稿日時: | 2004/08/23(月) 13:46 <↑親記事:No.199> |
投稿者: | tamo <URL> |
今気付きました。試してみます。
精力的な開発に感謝します。お疲れさまです。
No.203 | 投稿日時: | 2004/09/04(土) 19:42 <↑親記事:No.202> |
投稿者: | tamo <URL> |
libiconv-1.9.2 に iso-2022-jp-ms を追加するパッチを使ってみました。
monafontを使って、やっとこさ丸数字などを表示することができました。
Mutt の場合、set charset=eucJP-ms も必要ですね。(EUC-JP の場合)
確認できたので、mutt-devel に森山さんのパッチを投稿することにします。
ありがとうございました〜!
やっぱり iso-2022-jp-ms (名前はどうでもいいけど) は必要です。
No.204 | 投稿日時: | 2004/09/04(土) 21:53 <↑親記事:No.203> |
投稿者: | tamo <URL> |
> 確認できたので、mutt-devel に森山さんのパッチを投稿することにします。
正しくは mutt-dev でした。
No.205 | 投稿日時: | 2004/09/07(火) 12:26 <↑親記事:No.203> |
投稿者: | tamo <URL> |
> libiconv-1.9.2 に iso-2022-jp-ms を追加するパッチを使ってみました。> monafontを使って、やっとこさ丸数字などを表示することができました。> Mutt の場合、set charset=eucJP-ms も必要ですね。(EUC-JP の場合)森山さんに言っても仕方がないのですが、Mutt で iconv を使わない部分では eucJP-ms が認識されないからか、誤動作するようです。たとえば、ページャでメッセージを読むとき、行が日本語文字の半分で終わるときに、本当はあいうえおかき+くけこと表示されるはずなのに、上の例では「くけこ」が文字化けするようです。「く」の 1 バイト目が「き」の後ろに付いてしまっているんだと思います。set charset=euc-jpとすると正常に動きます。FreeBSD の mbrtowc 等を使う以上、これは仕方のないことなのでしょうね……。とりあえず報告まで。
No.207 | 投稿日時: | 2004/09/07(火) 13:03 <↑親記事:No.205> |
投稿者: | 森山 将之 <E-Mail> |
iconv() 側で、Mutt のように、charset 名のエイリアスを定義できるようにして、
EUC-JP → eucJP-ms
Shift_JIS → cp932
ISO-2022-JP → iso-2022-jp-ms
となるように出来ればいいんですがねぇ…
今は、コンパイル時に埋め込みでエイリアスが設定されてしまうので、それを外部ファイルで設定できるようにするというわけです。
そうすれば、Mutt 以外でも cp932ファミリ・エンコーディングが利用しやすくなりますから。
No.210 | 投稿日時: | 2004/09/13(月) 18:13 <↑親記事:No.205> |
投稿者: | tamo <URL> |
解決しました。
> FreeBSD の mbrtowc 等を使う以上、これは仕方のないことなのでしょうね……。
これを修正するための --without-wc-funcs だよなあ、と思って
mbyte.c に手を入れたら、ちゃんと動きました。Mutt はこれで問題なくなりました。
iconv 側でエイリアスを作って euc-jp を eucJP-ms にしちゃったりすると
send_charset とか file_charset で問題あるかもしれないので、Mutt に関しては
今回のような方法が一番いいと思います。
--- mbyte.c~ Mon Sep 13 14:30:09 2004
+++ mbyte.c Mon Sep 13 14:39:39 2004
@@ -64,7 +64,7 @@
Charset_is_utf8 = 1;
#ifndef HAVE_WC_FUNCS
else if (!strcmp(buffer, "euc-jp") || !strcmp(buffer, "shift_jis")
- || !strcmp(buffer, "cp932"))
+ || !strcmp(buffer, "cp932") || !strcmp(buffer, "eucJP-ms"))
{
charset_is_ja = 1;
charset_to_utf8 = mutt_iconv_open ("UTF-8", charset, 0);
--- charset.c~ Mon Sep 13 14:30:07 2004
+++ charset.c Mon Sep 13 14:41:55 2004
@@ -196,6 +196,7 @@
/* seems to be common on some systems */
{ "sjis", "Shift_JIS" },
+ { "euc-jp-ms", "eucJP-ms" },
/*
No.206 | 投稿日時: | 2004/09/07(火) 12:53 <↑親記事:No.203> |
投稿者: | 森山 将之 <E-Mail> |
テストありがとうございます。
早いところ、正式公開した方がよいのでしょうけれども、正式に公開するための作業をする気力がなく、なかなか手を付けられず、申し訳ありません。
ユーザー定義文字のエスケープシーケンスとして ESC$(? を使っていますが、これに関して意見とかあるでしょうか?
tamo さん以外でも、ご意見のある方はよろしくお願いいたします。