• ベストアンサー

漢字コードについて

漢字コードについて教えてください。 教えていただきたいのは、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"> としてサーバーにアップロードしたいと思っています。 自分の環境内では特に不具合はないようなのですが、何か問題になることはあるのでしょうか。よろしくお願いします。

  • Perl
  • 回答数6
  • ありがとう数3

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

  • ベストアンサー
  • 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

  • Dreamweaverで文字コードを指定して開けますか?

    ホームページ制作会社に作ってもらった、PHP+Smarty のシステムのコンテンツ更新をDreamweaver CS3 を使ってやっています。 具体的には、.tpl ファイルをDreamweaverで開いて編集しているのですが、 <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> と記述されているにもかかわらず、実際は日本語EUCで保存されていて、Dreamweaverでっ開くと文字化けしてしまいます。 今はいちいち、charset=shift_jis を charset=euc-jp にエディタで変更後、Dreamweaverで編集、編集後エディタでcharset=shift_jisに戻し、アップロードという面倒な作業をしています。 Dreamweaver で、meta charset=shift_jis の指定を無視して、日本語EUCでで開く方法はないでしょうか?

  • 文字コード変更による、文字化け・レイアウト崩れ

    文字コードをShift-jisからEUC-JPに変更したいのですが、 HTML・CSSに処理を施したら文字・レイアウトが大幅に崩れてしまいました。 以下のように変更したのですがやり方に間違いはないでしょうか? [HTML] <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> ↓↓ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> [CSS] @charset "shift_jis"; ↓↓ @charset "euc-jp"; また、ブラウザの表示⇒エンコードで(Shift_jis)を選択すると今までどおり正常に表示されます。(HTMLとCSSにはeuc-jpの記述にも関わらずです) これは文字コード変更したと思い込んでしまっているのでしょうか? 解決策お願いします。 あまり知識がありませんので、分かり易く教えていただけるとありがたいです。 ちなみにエディタはHTML Project2を使用しています。

  • HP 文字コードの指定

    文字コードについて質問いたします。 サーバー移管でHPを作るにあたり、「EUC-JP」か「Shift_JIS」で迷っています。 今まではYAHOOで「EUC-JP」をそのまま流れで使ってましたが、今回もサーバーの流れで 「Shift_JIS」にしようとしていましたが、いろいろと調べると ・「Shift_JIS」は多くのHPが使っている ・「EUC-JP」はコピーされにくい というのがわかりました。 やはり「EUC-JP」にしたほうがいいのでしょうか? 一般的にはどういった基準で選別されているのでしょうか?

  • htmlとperlを記述する時の文字コードについて

    今からホームページを作成するところです。 やりたいこととして、 1.html全体はShift_JISで記述 2.Shift_JISのtxtファイルから検索をかけて該当レコードを表示させるページをperl(CGI)でhtmlとして出力 この場合perlはShift_JISで記述すると問題があるでしょうか? CGIでtxtファイルを操作したとき内部ではeuc-jpで扱われる為、入出力の際にはjcodeなどを使った相互変換が必要になるとか思いますが、こちらの問題は取りあえずおいておきます。 perl自体はやはりeuc-jpで記述すべきでしょうか? htmlも含めて全てeuc-jpで記述すれば問題ないかと思うのですが今後の参考の為に聞いておきたいと思い質問させて頂いております。 また、上記のやりたいことを実現するのにperl以外のもっと良い方法があればご紹介頂ければ幸いです。 何卒よろしくお願い致します。

    • ベストアンサー
    • Perl
  • ホームページルダー6.0の文字コードの件

    shift_jisにしたいのですが、必ずEUC-JPになります。 shift_jisに設定を変更する方法はないですか? HTMLソースで変えても保存すると必ずEUC-JPになります。

  • 文字コードについて教えてください。

    ホームページを作成するときに指定する文字コードをどうしたらいいのか迷っています。 ウインドウズ環境でホームページを作る際、入力された文字は秀丸などの特別なソフトを使わなければ自動的にShift JISコードになると思うのですが、この場合、タグを <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> と指定するべきでしょうか?それとも、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp"> と指定するべきでしょうか? ISO-2022-JPで指定した場合、ブラウザが必ずしも自動判別してくれないこともあるのでしょうか? また、CGIスクリプトはShift JISで入力するとエラーを起こすことがあると聞いたことがあります。 ホームページを作成する場合には、常にISO-2022-JPかEUCの文字コードで作成するようにしたほうがいいのでしょうか? いろいろ検索して調べてみたのですが、どうもよくわかりません。宜しく御願いします。 なお、gooのホームページを閲覧するときも頻繁に文字化けしています(文字コードがEUCに指定されていないのはなぜでしょうか?)。

  • PHPプログラム内でHTML作成時の文字コード

    お世話になります。 PHPコード・及び内部エンコーディングはEUC-JPでプログラムを作成しています。 プログラムでHTMLファイルを作成する処理があるのですが、どうしてもEUC-JPで作成されてしまいます。 中身(<html>~)はmbstringできちんとShift_JISに変換して出力するのですが、ファイル自体の文字コードがEUC-JPで保存されているようで、ブラウザで表示するとエンコードがEUC-JPになって表示され、文字化けしております。 ブラウザのエンコードをShift_JISに直せば文字化けしないで表示されるのですが…。 プログラムから作成したファイルをShift_JISで作成する方法をご教授いただけましたら幸いです。 php.iniの設定をいじる権限はありません。また、プログラムをShift_JISにする以外で方法をお教えいただけないでしょうか。

    • ベストアンサー
    • PHP
  • Encode.pmで「髙」(ハシゴ高)が文字化けする

    Perl5.8で、EUCで保存されたテキストファイルを読み込み、Shift-JISで保存しようとしてます。 EUCからShift-JISへの変換は、Encode.pmを使用しています。 テキストファイルに「髙」(ハシゴ高 0xFCE2)や「﨑」が入っていた場合、変換されたデータは「?」(0x3F)になってしまいます。 「髙」や「﨑」をPerlを使用してEUCからShift-JISする方法はありませんでしょうか? ====================================== use Encode qw/ from_to /; open IN, "data.txt"; $data = <IN>; close IN; from_to( $data, 'euc-jp','shiftjis'); open OUT, ">data2.txt"; print OUT $data; close OUT; ====================================== 宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perlの文字コード

    1-2年ほど前、Perl5.8でソース自体をUTF8N(LF)で記述するようになり、 以下のように書いていました。 use utf8; use encoding "utf8"; use Encoding; それからPHPに移り、PHPでは、ソースはEUC-JP、DBもEUC、HTMLに出力する際もEUC-JPで統一していました。 最近またperlを使い出して疑問に思ったのですが、 perlではどのような文字コードで統一すれば一番よいのかということです。 javascriptはUTFだと動作しない端末(ザウルス)などあり、 perlもEUC-JPで統一しようと考えています。 昔、UTF8にこだわったのは、おそらく 「構」という文字は5Cなので、 文字コードによる不具合(ソース,js,cssで)を避けるためと、流行のUTF8にしたと思います。 perlでEUC-JPで文字コード統一させるメリットデメリットが知りたいです。 最近perlで書かれたサイトでHTML出力がShift_JISだったのですが、perlソースもシフトJISかは知りませんが、Shift_JISで統一するデメリットが知りたいです。 あと、WEBでどの文字コードが現在主流で、今後どうなるかも知りたいです。 EUC-JPで安泰なら、話は早いですが・・・

    • ベストアンサー
    • Perl
  • 間違った文字コードで保存

    「Shift_JIS」で書いたHTMLファイルを 秀丸で開いて間違って「EUC-JP」で保存してしまいました! 元に戻すには,どうしたら良いでしょうか??? よろしくお願いします m(_ _)m

専門家に質問してみよう