アカウント名:
パスワード:
1.MS932, Windows-31JなどShift_JIS系のコードページに本来のShift_JISに入っていない文字がある2.企業毎にShift_JIS系コードページの実装で文字セットとそのコードポイントの割り当てに違いがある3.それぞれのShift_JIS系のコードページとUnicodeのコード変換の対応表に違いがある (#1123871は、多分これ)
なお、もしアプリケーションがどちらの並びにも対応できるならばAIXではIBM943を使用するほうがよいと思います。IBM943はWindowsのSJISと互換性があるためです。
ところで、マイクロソフトはMS-DOSにおける唯一の日本語用コードページである「CP932」をOEMメーカーの自由に任せていた。NECのPC-9800シリーズ、IBMのDOS/V、富士通のFMRシリーズなどは全てMS-DOSを搭載しているコンピュータであり、搭載されている文字符号化方式もShift_JISを採用しているにもかかわらず、登録されている文字集合がバラバラであった。ところが、マイクロソフトは1993年、Windows3.1の日本語版を出すにあたり、「CP932」の仕様をOEMの自由に任せるという方針を撤回した。日本のパーソナルコンピュータ市場で、特に大きなシェアを持つ上記2社の統合コードをWindowsにおける日本語標準コードとし、また、これをIANAに「Windows-31J」という名で登録したのである。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
文字コード間変換 (スコア:0)
「~」の文字化け問題とかめんどくさー(;´Д`)
Re:文字コード間変換 (スコア:2, 興味深い)
UTF-8しか無ければ問題ない。
Re:文字コード間変換 (スコア:3, すばらしい洞察)
オマイラがShift_JISだと思ってる97% [mycom.co.jp]はShift_JISじゃなくてCP932(Windows31J,MS-Kanji等とも呼ぶ)だ。
本当に(規格上の)Shift_JISならunicodeと相互変換をしても文字(コード)化けはおきないハズ。(フォント環境の違いで字体化けはおきるかもしれんが)
Re:文字コード間変換 (スコア:3, 参考になる)
Shift_JISではなく正しくCP932として扱えばやはり変換しても化けない。CP932をShift_JISとして扱うから化ける。
Re:文字コード間変換 (スコア:2, 参考になる)
元コメント(#1123871)が言ってる「~」の文字化けの問題ってコードポイント自体の問題ではなく、コード変換テーブルの問題ですよね。
上の方で出てるコードページ(Shift_JIS, CP932, Windows-31J)で「~」はすべてコードポイントは8160で、一緒のはず。
CP932とShift_JISで文字化けが、っていう問題は
*MS932, Windows-31JなどShift_JIS系のコードページに本来のShift_JISに入っていない文字がある
*企業毎にShift_JIS系コードページの実装で文字セットとそのコードポイントの割り当てに違いがある
*それぞれのShift_JIS系のコードページとUnicodeのコード変換の対応表に違いがある (#1123871は、多分これ)
などという複数の原因があって、一緒くたにして議論するのはちょっと・・。
コード変換エンジンがそれぞれのShift_JIS系コードページ(特にShift_JISやCP932みたいな一般的なものに)にどのコードページ・コード変換テーブルの実装を割り当てているかが問題であって、CP932だから、Shift_JISだから化ける、化けないってのはちょっと本質的じゃない気がします。
ちなみにJavaを例にすると、
CP932はIBMの932のことで、マイクロソフトの932は Windows-31J か MS932。
Shift_JISはJDK1.4から本来のShift_JISになったはず(たしか)。
Shift_JISとUnicodeの変換に使われる変換テーブルと、CP932とUnicodeの変換に使われる変換テーブルが違うから、
「~」を Shift_JIS->Unicode->CP932 として変換すると一貫性が失われて文字が化ける、と。
重要なのは、行きと帰りで同じコードページ(というか、その文字にとって同じコード変換テーブルを持つコードページかな)を指定しないと文字化けを起こすということですね。
そういう意味で、行きと帰りで「正しい(文書などを作った人が意図した)」コードページを指定しないといけないんで、
一つのシステム上では一貫して同じコードページを使ったり、入力する前に強制的に揃えたりしないといけない。
こういうのを色々考えないといけないので、「めんどくさー」となりますよね。
Re:文字コード間変換 (スコア:1)
仕様上のShift_JISとunicodeの変換はunicodeコンソーシアムで決められてるから、ソレに従えば対応表は同じになるはず。でなければバグ。
CP932はMSローカル仕様だけど、CP932とunicodeの変換はMSで公開しているから、ソレに従えば対応表は同じになるはず。でなければバグ。
2,3は(使用者または変換実装者が)Shift_JIS系と一緒くたにするから発生する問題では?
個人的には(もはや誤解は解けないと思われるので)一般人がShift_JISと言ってきたら「どうせオマエの言ってるのはCP932のコトだろ」と扱うのが一番(97%)丸くおさめる方法じゃないかとは思いますが。
(ちなみに一般人がCGIと言ってきたら「どうせオマエの言ってるのはCommonGatewayInterfaceじゃなくてサーバ側プログラムならmod_xxxでもfastcgiでも何でもいいんだろ」と扱っても丸くおさまる)
Re:文字コード間変換 (スコア:0)
廃止されたあれ [unicode.org]のこと?
Re:文字コード間変換 (スコア:0)
他ベンダーのCodepage 932はCP932と呼んではいけないんでしょうか・・?
#細かくなっちゃってすみません。
Re:文字コード間変換 (スコア:1)
それ以外は状況に応じて個別対応か無視だな。
ところで「他ベンダーのCodepage 932」を調べたら
IBM932で検索したらAIXのマニュアルがhit [ibm.com]したけど、IBM943がデフォでIBM932は非推奨らしい。
でJava1.4 [sun.co.jp]および1.5 [sun.com]では(IBM932を意味してた)CP932はなく、CP942/943しかない。
もはやIBM932は現役じゃないんじゃないかな。
wikipedia:Microsoftコードページ932
ということらしいので、あとNEC CP932とFMR CP932とかありそうだが