木村さん

おお,やはり Windows-31J と Shift_JIS の違いですか.ご教示ありがとうございます.
ではこれから Windows 上では出来るだけ Windows-31J というエンコーディングを
明示したほうが良いわけですね.

エディタやブラウザなどで,Windows-31J と文字コードを明記したものが少ないのが
気になります.私はこれまでずーっと Shift_JIS という設定で日本語の文章を書いてきた
のですが,これは MS-DOS 時代から WIndows 時代への移り変わりのときに,
文字コードの違いを厳密に区別してこなかった人たちが(私をを含めて)いるという
ことなのでしょうね.

ちなみに,Windows-31J と CP932 とは同じものですか?CP932 は Windows 3.1
時代に,config.sys だか autoexec.bat だかで指定する必要があったように思います.


2009/08/01 14:15 に KIMURA Koichi<hogemuta / gmail.com> さんは書きました:
> 木村です。
>
> 大田黒俊夫 さんは書きました:
>> Ruby 1.9 系列のエンコーディングについて質問します.
>>
>> 以下のようなスクリプトで全角ダッシュ"−"をエンコードしようとすると,
>> エラーではねられます.
>>
>> ちなみに環境は Windows-XP SP3, Ruby 1.9.1 p243 (i386-mswin32)です.
>>
>> # -*- coding: Shift_JIS -*-
>> #
>> p "ー".encode("Windows-31J")  #=> "ー"
>> p "ソ".encode("Windows-31J")  #=> "ソ"
>> p "−".encode("Windows-31J")  #=>Encoding::UndefinedConversionError
>>
>> エラーメッセージの中に
>>  "\xE2\x88\x92" from UTF-8 to Windows-31J in conversion from Shift_JIS
>> to Windows-31J
>> というメッセージが含まれています.
>>
>> Shift_JIS の 5c というコードが悪さをしているのでしょうか?
>> そもそも,Shift_JIS と Windows-31J がどう違うのか,よくわかっていません.
>
> 今回のこの件については、0x5cは関係ありません。
> ShiftJISとWindows-31Jというのは、ほぼ同一のものなのですが一部に違いがあ
> ります。
> そのため、両者を混用すると今回のようなことが発生します。
>
> 上記の例の全角ダッシュは、ShiftJISとWindows-31Jでは値が違います。
> 「ShiftJISで表現した全角ダッシュをWindows-31Jの振りして」変換させ
> ようとしたので、エラーになったわけです。
>
> #大分はしょりましたが、ほかの人が補足してくれるんじゃないかな
>
> Ruby Freaks Lounge:第4回 Ruby M17N 事始め:文字コード編|gihyo.jp ... 技
> 術評論社
> http://gihyo.jp/dev/serial/01/ruby/0004
>
> Windows-31JとShiftJISがどうちがうのかは上の記事辺りをとっかかりに
> 調べてみてください。
>
>>
>> ちなみに,上記スクリプトの magic comment で Windows-31J を指定するとこのエラーは起きません.
>>
>> ご教示いただければ幸いです.
>>
>
> マジックコメントを Windows-31J にしたことによって、ShiftJISとの
> 混用がなくなったのでエラーも起きなくなったというわけです。
>
>
> --
> 木村浩一/KIMURA Koichi
>  I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
> shoud I?
>  mail kbk at kt.rim.or.jp
>  web  www.kt.rim.or.jp/~kbk/zakkicho/index.html


-- 
俊(とし)
* 望湖庵日記 http://griffin.cocolog-nifty.com/lakesidedairy/