漢字コードについて教えてください。
教えていただきたいのは、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"> としてサーバーにアップロードしたいと思っています。
自分の環境内では特に不具合はないようなのですが、何か問題になることはあるのでしょうか。よろしくお願いします。
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 $!;
とする必要があります。
間違った記述があれば、熟練者さんが訂正してくれるとは思いますが、とりあえ
ず知っていることを述べました。
No.6
- 回答日時:
厳密にいえば, Unix にしろ Windows にしろ「(ディレクトリなどを含む) ファイル名」以外で文字コードを意識しなければならない場面はないはずです (特に Unix におけるファイルの内容は「単なるバイト列」でしかない). なので, #3 の「システム文字コード」というのも「システム内部」の話ではなく「各種ユーティリティが (デフォルトとして) 持っている文字コード」を超えた意味があるわけではありません.
なので, 「ファイル名」や「ユーティリティが扱う」文字コードは意識しなければなりませんが, 本質的には「データの内容」について制限があるわけではありません.
No.5
- 回答日時:
自分の投稿を書いているうちに、No.3さんが投稿されましたね^^;
No.3さんによるとUNIX系は、UTF-8化が進んでいるようです。
Windowsの内部は、確かUTF-16LEという文字コードです。
また、Unicodeファイル名は、UTF-16だと思います。
Unicode関連の符号化スキームは多種あり、これだけでも頭がこんがらがります。
No.3
- 回答日時:
> 『UNIXはEUC-JP、windowsはShift-JIS』というのはどういうことなのでしょうか。
それは、古い情報です。
今は...
UNIX(Linux含む)は、UTF-8 化が進みつつあり、システム文字コードが UTF-8 のシステムが多いです。
Windows は、ユーザーからは「システムの文字コードは SJIS」の様に見える点は以前と同じです。 しかし、内部的には別のコードです。(UCS2 か何か、UTF-8 の親戚にあたるコードでしょう) 純然たる末端ユーザーであれば、「もっぱらSJISのみ使う」という方針が楽で良いです。 しかし、Webコンテンツ提供者は末端ユーザーでは無いのでそれでは済まないのです。
どちらの場合も、ユーザーの立場では、対応アプリケーションとある程度の知識さえあればどんな文字コードでも扱えます。
世界中の文字コードが統一されれば、こんな苦労は無くなります。 現状、統一の最有力候補は UTF-8 です。
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を吐かせることもあると思います。
質問者さんのサイトに携帯で訪問する人がいるかどうかですが。
早速回答ありがとうございます。
携帯対応はもともと考えていませんので、無視することにします。
漢字コードがよく理解できていないので、教えていただきたいのですが、よく目にする『UNIXはEUC-JP、windowsはShift-JIS』というのはどういうことなのでしょうか。
私はwindowsはShift-JISにしなければいけないと思い込んで今までやってきたのですが、回答を拝見しているとどうもそうではなさそうなので、教えていただけるとありがたいのですが。
No.1
- 回答日時:
手元で問題が無いのなら、大方は大丈夫です。
まれなケースとして、Webサーバーに変てこりんな設定がされてると化ける場合がでてきますが。むしろ、SJISで書かれた Perlソースは use encoding('Windows-31J'); というおまじないをしないと 「ソ」とか「表」とかの文字がうまく扱えないので、SJISは避ける方が無難です。
本当は、今後の事を考えると EUC-JP より UTF-8 に変更する方が良いのですが。
余談ですが、Windows上のSJISは、業界規格では Windows-31J という名前です。 charsetパラメーターなんかには、Shift_Jis より Windows-31J と書く方が良いですよ。 でないと、マイクロソフト製品以外のソフトウェアで機種依存文字に問題がでる事があります。
早速の回答ありがとうございます。EUC-JPで進めることにします。
ご指摘のとおり「表」「ソ」「ー」とかが正規表現でマッチせず、不便だなと思いながら、use encoding('Windows-31J'); のおまじないなどは知りませんでしたので、だましだまし使っていました。
EUC-JPに置き換えるのに少し時間がかかりますので、Windows-31J はすぐに変更しようと思います。
いっぱい教えていただきありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Windows 10 Windows 10 IoT Enterprise 2019 LTSC のHDD故障時の復旧 1 2022/05/27 12:06
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Windows 10 WindowsホストのVMware workstationで仮想マシンをシステム起動時に起動できるか 3 2023/06/18 17:52
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- C言語・C++・C# condaコマンドに対応したプロキシ設定が思うようにならないようです。 2 2022/04/11 17:15
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- USBメモリー・SDカード・フラッシュメモリー プリンタのドライバーをUSB Flash Diskに保存したい。 4 2023/05/23 23:30
- Wi-Fi・無線LAN Windows10でWi-Fi6Eが使えない!?そもそもWi-Fi6Eってなんでしたっけ?教えて! 1 2023/01/27 20:48
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl でエラー:Wide character...
-
数字を1桁なら半角、2桁以上...
-
perlについての質問
-
jcode.plのかわり
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
Excel VBAでPDFファイルをMicro...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
EXCELからCSVにすると余計なカ...
-
正規表現で、特定の文字列を含...
-
CString Format にて全角空白文...
-
住宅にカナを入力する際に丁目...
-
テキストボックスの文字列を置...
-
Accessのテキストボックスの入...
-
Accessで日付や数値を全角で表...
-
COBOLでの全角文字の判定をした...
-
VB.net、テキストボックス入力...
-
Word2007の全角文字、全角スペ...
-
Delphi6 Delimiterの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
【LaTeX】pBibTeXでのエラーの...
-
MFCのコントロールにUTF-8の文...
-
jcode.plのかわり
-
【文字コード】外見上は全く同...
-
デバッグ情報が文字化けする
-
UTF-16からUTF-8への変換
-
機種依存文字(株)を入力すると\...
-
今更ながらdbmopenでutf8環境に...
-
sedやperlでの2バイト文字を含...
-
perlについての質問
-
CGIでメール送信で件名文字化け
-
Java+MySQLで特殊文字(丸数字(...
-
Jcode.pmでconvertできない
-
WWW::Mechanizeの文字コードに...
-
HTML::Templateでutf-8のテンプ...
-
Perlで、文字の出現回数を調べ...
-
カタカナ一覧表が知りたい
-
WindowsでUTF-8のPerlスクリプ...
-
UTF-8 フラグ?で文字化けしま...
おすすめ情報