• ベストアンサー

漢字コードについて

漢字コードについて教えてください。 教えていただきたいのは、windowsでEUC-JPを使ってもいいのかということと、使ってもいいとしても何か制約とか問題が起きる事があるかどうかです。 お聞きしたい詳細は以下のとおりです。 現在は自分のホームページの更新の際に、ネットからデーターをダウンロードし、必要な情報を抜き出した上でデーター処理し、自分のホームページに載せています。 私のパソコンのOSはWIN XPですのでPERL はWINDOWS用のperlを使っています。PERLのプログラムはShift_JISで保存しています。 ダウンロードしてくるデーターはEUC-JPですので、いったんShift_JISに変換し、保存してあるPERLで処理しShift_JISとしてサーバーにアップロードしています。 この処理をもう少し簡単にするために、PERLのプログラム自体をEUC-JPで保存し、ダウンロードしたデーターをEUC-JPのまま処理、<META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> としてサーバーにアップロードしたいと思っています。 自分の環境内では特に不具合はないようなのですが、何か問題になることはあるのでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.4

私はUNIX系のOSを扱ったことはないのですが、OS自体が使っている日本語文字コ ードが、UNIX系ではEUC-JP、WindowsではShift-JISということだと思います。 だから、とりあえずUNIX系ではEUC-JPを、WindowsではShift-JISを使っていれば 文字コード系のトラブルに会わなくてすむということだと思います。 例えば、Perlで日本語を文字単位として扱いたい場合は、utf8で記述する必要が あるのですが、WindowsがShfit-JISを使っているため、OSとのやりとりをする場 合、文字コードの適切な変換が必要となり、ここでトラブルの起こることが初心 者には多いようです(まあ、私も初心者をやっと卒業したような者ですが^^;) 例えば、以下ようなコードは、 use utf8; $file = "日本語.txt"; open my $fh, $file or die $!; Windowsでは(Windowsに限らず内部Unicode表現を外部に出すときは、適切な文 字コードにする(エンコードする)必要はあるのですが、)、Shift-JISに変換 して、 use utf8; use Encode; $file = encode("cp932", "日本語.txt"); open my $fh, $file or die $!; とする必要があります。 間違った記述があれば、熟練者さんが訂正してくれるとは思いますが、とりあえ ず知っていることを述べました。

その他の回答 (5)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

厳密にいえば, Unix にしろ Windows にしろ「(ディレクトリなどを含む) ファイル名」以外で文字コードを意識しなければならない場面はないはずです (特に Unix におけるファイルの内容は「単なるバイト列」でしかない). なので, #3 の「システム文字コード」というのも「システム内部」の話ではなく「各種ユーティリティが (デフォルトとして) 持っている文字コード」を超えた意味があるわけではありません. なので, 「ファイル名」や「ユーティリティが扱う」文字コードは意識しなければなりませんが, 本質的には「データの内容」について制限があるわけではありません.

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.5

自分の投稿を書いているうちに、No.3さんが投稿されましたね^^; No.3さんによるとUNIX系は、UTF-8化が進んでいるようです。 Windowsの内部は、確かUTF-16LEという文字コードです。 また、Unicodeファイル名は、UTF-16だと思います。 Unicode関連の符号化スキームは多種あり、これだけでも頭がこんがらがります。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.3

> 『UNIXはEUC-JP、windowsはShift-JIS』というのはどういうことなのでしょうか。 それは、古い情報です。 今は... UNIX(Linux含む)は、UTF-8 化が進みつつあり、システム文字コードが UTF-8 のシステムが多いです。 Windows は、ユーザーからは「システムの文字コードは SJIS」の様に見える点は以前と同じです。 しかし、内部的には別のコードです。(UCS2 か何か、UTF-8 の親戚にあたるコードでしょう) 純然たる末端ユーザーであれば、「もっぱらSJISのみ使う」という方針が楽で良いです。 しかし、Webコンテンツ提供者は末端ユーザーでは無いのでそれでは済まないのです。 どちらの場合も、ユーザーの立場では、対応アプリケーションとある程度の知識さえあればどんな文字コードでも扱えます。 世界中の文字コードが統一されれば、こんな苦労は無くなります。 現状、統一の最有力候補は UTF-8 です。

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

Shift-JISは、No.1さんが指摘されているような問題が多々あるので、逆にEUC-JP にするほうが普通だったようです。 日本語をバイト列でなく文字として処理したい場合は、Shfit-JISでもEUC-JPでも use encodingしないといけませんが、use encodingはレキシカルスコープ持たな い、Perl IOをいじる等の問題があるため非推奨で、use utf8としてutf8にするケ ースが増えていると思います。 古い携帯だと、Shift-JISしか認識しないので、内部処理は全てutf8でして、出力 時だけ :encoding(cp932) として、Shift-JISを吐かせることもあると思います。 質問者さんのサイトに携帯で訪問する人がいるかどうかですが。

yamamotoar
質問者

お礼

早速回答ありがとうございます。 携帯対応はもともと考えていませんので、無視することにします。 漢字コードがよく理解できていないので、教えていただきたいのですが、よく目にする『UNIXはEUC-JP、windowsはShift-JIS』というのはどういうことなのでしょうか。 私はwindowsはShift-JISにしなければいけないと思い込んで今までやってきたのですが、回答を拝見しているとどうもそうではなさそうなので、教えていただけるとありがたいのですが。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

手元で問題が無いのなら、大方は大丈夫です。 まれなケースとして、Webサーバーに変てこりんな設定がされてると化ける場合がでてきますが。 むしろ、SJISで書かれた Perlソースは use encoding('Windows-31J'); というおまじないをしないと 「ソ」とか「表」とかの文字がうまく扱えないので、SJISは避ける方が無難です。 本当は、今後の事を考えると EUC-JP より UTF-8 に変更する方が良いのですが。 余談ですが、Windows上のSJISは、業界規格では Windows-31J という名前です。 charsetパラメーターなんかには、Shift_Jis より Windows-31J と書く方が良いですよ。 でないと、マイクロソフト製品以外のソフトウェアで機種依存文字に問題がでる事があります。

yamamotoar
質問者

お礼

早速の回答ありがとうございます。EUC-JPで進めることにします。 ご指摘のとおり「表」「ソ」「ー」とかが正規表現でマッチせず、不便だなと思いながら、use encoding('Windows-31J'); のおまじないなどは知りませんでしたので、だましだまし使っていました。 EUC-JPに置き換えるのに少し時間がかかりますので、Windows-31J はすぐに変更しようと思います。 いっぱい教えていただきありがとうございます。

関連するQ&A