You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
Text Editors
>
Text Processing
>
skf - simple kanji filter
>
討論區
>
公開討論
>
cp932
skf - simple kanji filter
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
檔案下載
發布列表
Stats
原始碼
儲存庫列表
CVS
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
溝通
討論區列表
幫助論壇 (3)
公開討論 (12)
新聞
討論區:
公開討論
(Thread #9294)
Return to Thread list
RSS
cp932 (2005-11-11 04:54 by
naruse
#17787)
Create ticket
こんにちは。
改めてskfを試していて気づいた事をいくつか。
まず、NetBSDにおいて-lintlがないためにエラーが出る件が再発しています。
cp932の入力が壊れているようです。
また、出力もIBM拡張漢字の範囲がNEC選定IBM拡張漢字側に変換されています。
詳細なテスト結果は以下においておきました。
http://naruse.biz/dev/result_skf.txt
なお、期待する値は以下を参照しています。
http://search.cpan.org/src/DANKOGAI/Encode-2.12/ucm/cp932.ucm
マニュアルの、
ucs2 UTF-16 転送形式の Unicode(v4.0) である。こ の オ プ
ショ ンは --x0212-enable を含む。入出力は標準ではリ
トルエンディアンで、BOM が --disable-endian を指 定
し ない限り付けられる。また、--limit-to-ucs2 を指定
しない限り、サロゲートペアを用いた UTF-32 範囲の 値
が 出力される。細かいコード設定は以下オプションを参
照のこと。
について、--disable-endian でなく --disable-endian-markではないでしょうか。
コードを見ていてふと気づいたのですが、KINIMOTOを定義していない時、
while (TRUE) から抜けられないような気がします。
Index: skf.c
===================================================================
RCS file: /cvsroot/skf/skf-1.93/skf.c,v
retrieving revision 1.7
diff -u -r1.7 skf.c
--- skf.c 6 Nov 2005 02:26:47 -0000 1.7
+++ skf.c 10 Nov 2005 19:42:08 -0000
@@ -875,7 +875,7 @@
};
#else /* !KUNIMOTO */
us = preConvert (fin); /* character conversion */
- if (us != sEOF) {
+ if (us == sEOF) {
break;
} else if (us == sOCD) {
#ifdef DEBUG
よろしくおねがいします。
RE: cp932 (2005-11-11 22:25 by
efialtes
#17801)
Create ticket
バグ報告ありがとうございます。
(1) すみません。NetBSD の件は、まだ直していません。NetBSD 環境は VM 上に作ってはあるんですが、他の修正の関係で手が着いてない状況です。
(2) cp932 関係は見ます。他は指摘通りの模様。修正します、というか KUNIMOTO を Default としてスイッチを外す方向で直す予定です。
(3) 他に、今 --disable-dynamic の時にあちこち 1.92 からエンバグしているのが分かっていて、1.94 のバックポート中です。
回覆:
#17787
RE: cp932(2) (2005-11-14 00:27 by
efialtes
#17832)
Create ticket
(1)とりあえず一次レポートです。
U+005c,7e 仕様。というか icu がおかしいと思う。cp932 は 0x00-0x7e は
JIS X-0201 のはず。
U+00A1 仕様。というか icu がおかしいと思う。
U+00A6 調査中
U+00A9,AA,AD,AE 仕様
U+00AF どうするか検討中
U+00B2 - U+00FF 仕様。というか icu がおかしいと思う。
U+041A, U+221A 再現せず。条件を教えてください。
U+2170 - U+2179 仕様。icu のマッピングの意図は分かるが、修正しない。
U+301D どうするか検討中
U+3094 仕様。というか icu がおかしいと思う。
U+4E28 - U+FFE4 仕様。icu のマッピングの意図は分かるが、修正しない。
U+FA1A, U+FF1A 再現せず。条件を教えてください。
cp932 の場合、NEC 外字領域と IBM 外字領域には同じ字がマップされています。skf では NEC 外字を吐くようにしています (IBM 外字に対応しない機種があるため)。Windows 環境下では内部で Unification されるので、問題がないはず。
(2) IBM ebcdic は 1.93 では未サポートにしているので、修正は 1.94 送りにします。
回覆:
#17787
RE: cp932 (2005-11-14 07:58 by
naruse
#17834)
Create ticket
> U+005c,7e 仕様。というか icu がおかしいと思う。cp932 は 0x00-0x7e は
> JIS X-0201 のはず。
確かにIANAの登録では
> The CCS's are JIS X0201:1997, JIS X0208:1997, and these extensions.
となっているのですが、実装を見ても、CP932.txtを見ても、
MicrosoftのWebサイトにあったCP932の情報を見てもASCIIになっています。
CP932がMicrosoftの独自実装であり、それでいてその仕様が固まっているのですから、
それにあわせた方がうれしいかと。
なお実装は以下に調べた結果と用いたコードを。
http://naruse.biz/dev/Unicode_to_cp932.txt
MSのサイトはここです。
http://www.microsoft.com/globaldev/reference/dbcs/932.mspx
> U+00A1 仕様。というか icu がおかしいと思う。
> U+00B2 - U+00FF 仕様。というか icu がおかしいと思う。
> U+3094 仕様。というか icu がおかしいと思う。
実装及びcp932.ucmでは変換されますが、
一方向変換なせいか932.mspxにもCP932.txtにも載ってませんね。。
> U+041A, U+221A 再現せず。条件を教えてください。
> U+FA1A, U+FF1A 再現せず。条件を教えてください。
このテストはWindowsXP SP2 + MSYS + gcc version 3.4.2 (mingw-special)で行ったのですが、
FreeBSD 5.4-RELEASE-p2では再現しませんね・・・。
> perl -e"print qq/\x04\x1a/"|skf --ic=utf-16 --oc=cp932 --input-big-endian|od -t x1
0000000 81 ac
0000002
となります。2byte目が1Aで共通している辺りが妖しいですが、、
> cp932 の場合、NEC 外字領域と IBM 外字領域には同じ字がマップされています。skf では NEC 外字を吐くようにしています (IBM 外字に対応しない機種があるため)。Windows 環境下では内部で Unification されるので、問題がないはず。
仰るとおり、Windowsならば正規化されますし、特別問題になるとは思いませんけれど、
Windowsでは JIS > NEC特殊文字 > IBM拡張文字 > NEC選定IBM拡張文字
の順に優先して変換するので、それにあわせて欲しい気もします。
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/uni2sjis.html
回覆:
#17787
RE: cp932(3) (2005-11-15 00:19 by
efialtes
#17858)
Create ticket
了解。x0201→ascii, IBM 拡張文字化ほかは patch 8 で修正します。U+00A1 関係は直さないつもり。
∵) (1) cp932 の文字集合に入っていないものの定義はそもそもないはず。これは cp932.txt にないのと整合している。多分不便だからこういうマッピングをしているんでしょうけど
(2) skf は文字集合にないのをみて、実体参照ほかを吐いている手順になっているので、cp932 に閉じる際の問題は緩和されているので、わざわざ違う文字に変換する積極的な理由は乏しい。また、cp932 とはいえ変な文字に変換してしまうと XML で使う際に個人的には不便。
U+041A:Cygwin だと正しいので、mingw 環境が絡んでいるようですねぇ。
回覆:
#17787
RE: cp932(3) (2005-11-15 04:07 by
naruse
#17862)
Create ticket
x0201→ascii, IBM 拡張文字化ほかはありがとうございます。
U+00A1関連は、変換するよりむしろエラーにして欲しいと言う要望は受けた事があるのでわかります。
その辺の動作が欲しい時は、Unicode互換正規化をBlock単位でかけられると事足りるはずなので、そういう機能があると嬉しいです。
Perlのモジュールとして使う場合には特に。
回覆:
#17858
RE: cp932(4) (2005-12-11 20:31 by
efialtes
#18443)
Create ticket
1.93.9 で NetBSD のコンパイルが通らない件は修正しました。
回覆:
#17787