文字コード掲示板


一括購読


No.211投稿日時:2004/09/17(金) 19:14    <親記事>
投稿者:はせがわ  <URL>

コードページ 51932 と 20932

Samba方面ではお世話になっております。

Windows での EUC-JP について、「eucJP-ms と cp51932」 <http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?c=r&n=152> や「iconvについて」<http://www.miraclelinux.com/technet/samba30/iconv_issues.html>
にて、EUC-JP の Windows 上での実装はコードページ 51932 である、と書かれています(-msかどうかはここでは置いておきます)。
私が自身で試した範囲では、MultiByteToWideChar などの従来のコードページの変換方法では CP51932 は扱えず、
MLang.DLL の ConvertINet系の関数によってのみコードページの変換を行うことができました。
<http://d.hatena.ne.jp/hasegawayosuke/20040905#p1>
森山さんが上記のドキュメントを書かれた際には、どういう方法で確認をされたか教えていただけないでしょうか。
また、世間では CP20932 が EUC-JP である、とも言われていますが、この謎のコードページ 20932 について、何かご存知でしたら教えていただけないでしょうか。


No.212投稿日時:2004/09/18(土) 00:51    <↑親記事:No.211>
投稿者:森山 将之

Re: コードページ 51932 と 20932

はせがわさんのご指摘の通り、Windows Code Page 51932 は MLang を使わないと変換できませんでした。

Windows Code Page 20932 に関しては、確か、完全な変換はサボートしておらず、実用的に使う事は出来ないものだと記憶しています。私の勘違いかもしれませんが。
ちなみに、cp20932 は、%SystemRoot%\System32\c_20932.nls で定義されているが、cp51932 のものは無い事から、cp20932 説が流布されているのかもしれません…

ちなみに、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpisdk/dhtml/refe...
では、Windows (IE) の EUC-JP は Code Page 51932 という事になっています。

この手の話は、他人の言うことを信用せずに、自分で調べてみないことには、本当の事はわかりません。自分で調べずに他人の言う事を信じてしまう人が多いので、間違った情報が、あたかも正しい事であるかのうに信じられてしまう事がありますね。

という事で、私の書いている事でも、もしかしたら間違いが含まれているかもしれないとう目で、厳しくチェックしていただけると、うれしいです。


No.221投稿日時:2004/10/07(木) 04:27    <↑親記事:No.211>
投稿者:森山 将之

CP20932 のコード範囲

Windows 2000 の WideCharToMultiByte() で CP20932 を調べた結果、コード範囲は、次のようになっていました。

1バイトコード
0x00〜0x7F US-ASCII

2バイトコード
1バイト目 0x8E 2バイト目 0xA1〜0xDF JIS X 0201 片仮名
1バイト目 0xA1〜0xFE 2バイト目 0xA1〜0xFE JIS X 0208 + α
1バイト目 0xA1〜0xFE 2バイト目 0x21〜0x7E JIS X 0212 + β

α = NEC特殊文字(CP932 13区) + ユーザー定義文字(CP932 95区〜104区)
β = IBM拡張文字 - JIS X 0212 + ユーザー定義文字(CP932 105区〜114区)

2バイトコードにエンコードされている JIS X 0212 を EUC-JP の 3バイトコードにしてやれば、eucJP-open (eucJP-ascii) になりそうです(全文字調べたわけではありません)。JIS X 0208 の「〜」は WAVE DASH U+301C に変換されます。

よって、CP20932 は

・EUC-JP に似ているが EUC-JP とは異なる独自エンコーディングである。
・CP20932 (eucJP-ascii モドキ) ⇔ CP932 の変換は、一部変換できない文字がある。

という事で、実際に使用するのは問題アリでしょう。
(問題アリで『使えない』と判断していますので、突っ込んだ解析は行っていません。)

【参考】
Code-Page Identifiers
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_81rn.asp
eucJP-open についての説明
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
eucJP-open と UCS との間のコード変換規則
http://www.opengroup.or.jp/jvc/cde/appendix.html
eucJP-ms
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/eucJP-ms.html


Script : Sylpheed 1.24
Modified by MORIYAMA Masayuki