by 高須 97.8.8 ホームページ コンピュータ・メモの目次
それから、パソコンを使い始めた知合いに、
「JIS, SJIS, EUCから選べ、とあるけど、どれに設定したらいいの?
JISとかSJISって、なあに?」とよく聞かれるので、
ついでにまとめておきます。
といっても、あまりわかりやすい説明になってないかもしれません。
詳しく知りたい方は参考文献を見て下さい。
マックなどのパソコンはたいていSJISを使っています。
EUC (extended unix codeの略。AT&T JISともいう)は
UNIX ワークステーションの内部表現に使われてます。
メールはJISで送ることが多いです。
大抵のメーラーで、
JISで送るように標準設定されているはずです。
やっかいなのが「半角カナ」です。
半角カナというのは、
全角Aの半分の大きさAのカナのことです。
半角カナそのものをここに書くと読めないので書いてません。
niftyでは、半角カナを使うことがよくあります。
でも、インターネットのメールで半角カナが入っていると、
メールのそれ以降が読めなくなったり、
場合によっては、メーラが動かなくなります。
半角カナはメールに書かない方が安全です。
半角カナには主に、SJISの半角カナと、EUCの半角カナがあります。
以上のような、「日本語の文字→01の記号」という変換は、
やり方さえ決めればできます。
逆の「01の記号→日本語の文字」は、やり方(EUCとかSJISとか)が
わかっていればできますが、ただ01の記号を与えられただけでは、
何通りかの可能性が出てきてしまいます。
1) %8E%D3%8E%CA%8E%DE%8E%B2%8E%D9%8E%B7%8E%DE%8E%B1 「モバイルギア」EUC圧縮方式 半角カナ 2) %CA%AF%B6%B0 「ハッカー」SJIS、半角カナ赤で書いてあるのは、いろいろやってみて、わかったことです。
$word =~ s/%(..)/pack("c", hex($1))/ge; $code = &jcode'getcode(*word);すると、1)はsjis, 2)はeucという結果になり、 正しい答は得られません。
これはどうしてかというと、getcodeでは、
文字が全角であると仮定しているからです。
なぜ半角の判定ができないかというと、sjisの全角とeucの半角カナ、
sjisの半角カナとeucの全角の、
コンピュータ内部での表現が重なっているためです。
試しに、
&jcode'convert(*word, "jis")を用いて、(全角と解釈して)JISに変換すると次のようになります。
1)謝写酌軸勺執酌竺人間がこれを見た場合、「これは変だ。半角カナかもしれない」と思って、
2)墳彊
でも、コンピュータに「任意のコードを、JISの全角の文字に
正しく変換」させることは難しいです。
第1バイト 8Eなので、1つおきに、8Eが並んでいれば、EUC半角カタカナの可能性が
第2バイト A1-DF
一方、SJISの半角カタカナは、
A1-DFの1バイトで表しているので、全然判定できないです。
・jcode.pl (K. Utashiro氏による)
・jconv.c, jcode.c ([1]の著者のLunde氏による)
・nkf