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.
Descargar
Desarrollar
Cuenta
Descargar
Desarrollar
Entrar
Forgot Account/Password
Crear Cuenta
Idioma
Ayuda
Idioma
Ayuda
×
Entrar
Nombre de usuario
Contraseña
×
Forgot Account/Password
Translation Status of Español
Categoría:
Software
Gente
PersonalForge
Magazine
Wiki
Buscar
OSDN
>
Buscar Software
>
Text Editors
>
Text Processing
>
skf - simple kanji filter
>
Foros
>
Open Discussion
>
cp932
skf - simple kanji filter
Descripción
Project Summary
Developer Dashboard
Página Web
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
Historial
Descargas
List of Releases
Stats
Código Fuente
Code Repository list
CVS
Ver Repositorio
Incidencia
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Communication
List of Forums
Ayuda (3)
Open Discussion (12)
Noticias
Foros:
Open Discussion
(Thread #9294)
Return to Thread list
RSS
cp932 (2005-11-11 04:54 by
naruse
#17787)
Crear incidencia
こんにちは。
改めて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)
Crear incidencia
バグ報告ありがとうございます。
(1) すみません。NetBSD の件は、まだ直していません。NetBSD 環境は VM 上に作ってはあるんですが、他の修正の関係で手が着いてない状況です。
(2) cp932 関係は見ます。他は指摘通りの模様。修正します、というか KUNIMOTO を Default としてスイッチを外す方向で直す予定です。
(3) 他に、今 --disable-dynamic の時にあちこち 1.92 からエンバグしているのが分かっていて、1.94 のバックポート中です。
Responder al
#17787
RE: cp932(2) (2005-11-14 00:27 by
efialtes
#17832)
Crear incidencia
(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 送りにします。
Responder al
#17787
RE: cp932 (2005-11-14 07:58 by
naruse
#17834)
Crear incidencia
> 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
Responder al
#17787
RE: cp932(3) (2005-11-15 00:19 by
efialtes
#17858)
Crear incidencia
了解。x0201→ascii, IBM 拡張文字化ほかは patch 8 で修正します。U+00A1 関係は直さないつもり。
∵) (1) cp932 の文字集合に入っていないものの定義はそもそもないはず。これは cp932.txt にないのと整合している。多分不便だからこういうマッピングをしているんでしょうけど
(2) skf は文字集合にないのをみて、実体参照ほかを吐いている手順になっているので、cp932 に閉じる際の問題は緩和されているので、わざわざ違う文字に変換する積極的な理由は乏しい。また、cp932 とはいえ変な文字に変換してしまうと XML で使う際に個人的には不便。
U+041A:Cygwin だと正しいので、mingw 環境が絡んでいるようですねぇ。
Responder al
#17787
RE: cp932(3) (2005-11-15 04:07 by
naruse
#17862)
Crear incidencia
x0201→ascii, IBM 拡張文字化ほかはありがとうございます。
U+00A1関連は、変換するよりむしろエラーにして欲しいと言う要望は受けた事があるのでわかります。
その辺の動作が欲しい時は、Unicode互換正規化をBlock単位でかけられると事足りるはずなので、そういう機能があると嬉しいです。
Perlのモジュールとして使う場合には特に。
Responder al
#17858
RE: cp932(4) (2005-12-11 20:31 by
efialtes
#18443)
Crear incidencia
1.93.9 で NetBSD のコンパイルが通らない件は修正しました。
Responder al
#17787