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.
Download
Entwicklung
Konto
Download
Entwicklung
Anmelden
Vergessen Konto/Passwort
Konto erstellen
Sprache
Hilfe
Sprache
Hilfe
×
Anmelden
Anmeldename
Passwort
×
Vergessen Konto/Passwort
Übersetzungsstatus von Deutsch
Kategorie:
Software
Personen
PersonalForge
Magazine
Wiki
Suche
OSDN
>
Finden Software
>
Text Editors
>
Text Processing
>
skf - simple kanji filter
>
Foren
>
Offene Diskussion
>
cp932
skf - simple kanji filter
Beschreibung
Projekt Zusammenfassung
Entwickler-Dashboard
Web-Seite
Entwickler
Bildergalerie
RSS Feed-Liste
Aktivität
Statistiken
Historie
Downloads
Aller Releases-Liste
Statistiken
Quellcode
Quellcode-Repositorys-Liste
CVS
Repository ansehen
Ticket
Ticket-Liste
Liste der Meilensteine
Typenliste
Komponentenliste
Liste der zuletzt benutzten Tickets/RSS
Neue Ticket abschicken
Dokumente
Kommunikation
Forum-Liste
Hilfe (3)
Offene Diskussion (12)
Neuigkeiten
Foren:
Offene Diskussion
(Thread #9294)
Zurück zur Thread-Liste
RSS
cp932 (2005-11-11 04:54 by
naruse
#17787)
Ticket erstellen
こんにちは。
改めて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)
Ticket erstellen
バグ報告ありがとうございます。
(1) すみません。NetBSD の件は、まだ直していません。NetBSD 環境は VM 上に作ってはあるんですが、他の修正の関係で手が着いてない状況です。
(2) cp932 関係は見ます。他は指摘通りの模様。修正します、というか KUNIMOTO を Default としてスイッチを外す方向で直す予定です。
(3) 他に、今 --disable-dynamic の時にあちこち 1.92 からエンバグしているのが分かっていて、1.94 のバックポート中です。
Reply to
#17787
RE: cp932(2) (2005-11-14 00:27 by
efialtes
#17832)
Ticket erstellen
(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 送りにします。
Reply to
#17787
RE: cp932 (2005-11-14 07:58 by
naruse
#17834)
Ticket erstellen
> 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
Reply to
#17787
RE: cp932(3) (2005-11-15 00:19 by
efialtes
#17858)
Ticket erstellen
了解。x0201→ascii, IBM 拡張文字化ほかは patch 8 で修正します。U+00A1 関係は直さないつもり。
∵) (1) cp932 の文字集合に入っていないものの定義はそもそもないはず。これは cp932.txt にないのと整合している。多分不便だからこういうマッピングをしているんでしょうけど
(2) skf は文字集合にないのをみて、実体参照ほかを吐いている手順になっているので、cp932 に閉じる際の問題は緩和されているので、わざわざ違う文字に変換する積極的な理由は乏しい。また、cp932 とはいえ変な文字に変換してしまうと XML で使う際に個人的には不便。
U+041A:Cygwin だと正しいので、mingw 環境が絡んでいるようですねぇ。
Reply to
#17787
RE: cp932(3) (2005-11-15 04:07 by
naruse
#17862)
Ticket erstellen
x0201→ascii, IBM 拡張文字化ほかはありがとうございます。
U+00A1関連は、変換するよりむしろエラーにして欲しいと言う要望は受けた事があるのでわかります。
その辺の動作が欲しい時は、Unicode互換正規化をBlock単位でかけられると事足りるはずなので、そういう機能があると嬉しいです。
Perlのモジュールとして使う場合には特に。
Reply to
#17858
RE: cp932(4) (2005-12-11 20:31 by
efialtes
#18443)
Ticket erstellen
1.93.9 で NetBSD のコンパイルが通らない件は修正しました。
Reply to
#17787