• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlで読み込むテキストの文字コードは一般に何?)

perlで読み込むテキストの文字コードは一般に何?

このQ&Aのポイント
  • perlで読み込むテキストの文字コードについて知りたいです。最近、UTF-8に統一しましたが、他に良い方法があるのか気になります。
  • パソコン初心者の友達へのプログラム作成で、文字コードの問題に悩まされています。UTF-8以外にもっと良い方法があるのか教えてください。
  • perlでテキストファイルを読み込む際の文字コードについて質問です。以前はShift-jisを使用していましたが、最近はUTF-8に統一しました。他におすすめの文字コードはありますか?

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

Windowsでは歴史的要因からShift_JISと思われていますが、WindowsXP(2000)以降は、UTF8を内部的に使用しています。  しかし、Perlは、しばしば古いUNIX上で動かす可能性もあるため、EUCで様々な処理を行い、必要に応じて入出力の段階で変換しています。基本的にEUCでは文字化けが起こりにくいことと、豊富な歴史的産物が使えるからです。 ★Perl正規表現雑技 ( http://www.din.or.jp/~ohzaki/regex.htm ) ★Perlメモ ( http://www.din.or.jp/~ohzaki/perl.htm )  また、テキストエディタですが、さすがにメモ帳は勧めていません。 ・元に戻る回数が限定されている。 ・改行コードの違い,タブ,全角と半角の文字の区別が付かない ・検索・置換が、不便 ・正規表現が使えない ・様々な文字コードを扱えない  そのため、特に初心者には「テキストエディタ EmEditor - EmEditor Free ( http://jp.emeditor.com/modules/download2/rewrite/tc_5.html )」などの高機能テキストエディタを勧めています。初心者には必需品です。リンク先の下のほうにfree版へのリンクがあります。  当然、UTFであってもBOMをつけないで保存できます。  

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • root139
  • ベストアンサー率60% (488/809)
回答No.5

#2 です。 すいません、ちょっと勘違いをして、#2では読込むテキストではなく、Perlスクリプト自体の文字コードのつもりで書いてました。 > また、文字コードについて実は、まだあまり理解できていないのですが、PERLでスクリプトを書く場合、 > use utf8; > は付けずに書いております。これは、書いた方が良い物でしょうか? 他の方も指摘されている通り、スクリプト自体をutf8で書く場合でなければ、付けてはいけません。詳細は#2に書いたサイトを見て下さい。 が、スクリプト自体をutf8で書き、 use utf8; を付けて、内部表現と入出力のエンコードを意識しつつ処理するが無難だと思います。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

個人的には「文字化け」は無視しているし (<ぉぃ) 日本語と英語が使えれば (少なくとも当面は) 十分なので, 「Unicode にする」モチベーションがないんですよね.... ということで, Windows では主に shift-jis. Unix とかを考えてもむしろ ISO-2022-JP. perl における utf8 プラグマは「スクリプトが UTF-8 で書かれている」, つまり識別子や文字列定数 (正規表現を含む) が UTF-8 で書かれていることを示すためにあり, またそれ以外の目的で (ってなんだろう) use してはならないということになっています. だから識別子や文字列定数が ASCII に含まれる文字のみであれば utf8 を use する必要はありません. 特に, 「読み込むテキストの文字コード」とは無関係です. あと, Windows で UTF-8 なテキストに対し BOM をつける件ですが, これについては個人的には Microsoft を非難する気にはなれないです. そもそも (日本の) Windows では shift-jis が使われていたわけですから「何らかの方法で UTF-8 なテキストを区別したい」というのは自然な考え方ですし, そのような状況下で UTF-8 なテキストに (Unicode で書かれていることを示すマークとして) BOM をつけることは Unicode Consortium でも認められています. 実際, FAQ にも「プレーンテキストであることは分かっているが符号化方法が不明なときには BOM を使うことができる」と書かれています. この質問の文章だけでは正確なところが分からないんだけど, ひょっとするとあなたの作ったプログラムの方で「BOM のついた UTF-8 な設定ファイル」を許してあげる方がいいのかもしれません. 特に, Windows 環境で動かすプログラムであれば ・BOM があれば UTF-8 ・なければ shift-jis と解釈するのがよいのかも.

すると、全ての回答が全文表示されます。
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

以前は EUC_JPで書くことが多く、状況によって Shift_JIS だったりしましたが、Perl5.8 以降は「use utf8;」を付けて UTF-8 で書くことがほとんどですね。 Perl5.8 以降は文字列の扱いが変わって内部ではUTF-8として扱うことになっているので、UTF-8で書くのが無難だと思いますよ。 http://hikoboshi.org/perl/utf8.html http://www.rwds.net/kuroita/program/Perl_unicode.html 上記のサイトに有るとおり、入出力時には内部表現、つまりutf8フラグ付きのUTF-8文字列との変換を行なうのがセオリーだと思います。 それから、BOMに関してですが、本来UTF-8にBOMは不要なので、マイクロソフト系のソフトウェアでUTF-8のBOMが必須となっているのは、そちらの方が問題ですね・・・。 http://ja.wikipedia.org/wiki/UTF-8#.E3.83.90.E3.82.A4.E3.83.88.E9.A0.86.E3.83.9E.E3.83.BC.E3.82.AF.E3.81.AE.E4.BD.BF.E7.94.A8.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6

utsumi_ya
質問者

お礼

回答いただきありがとうございます。 UTF-8で良いのですね。安心しました。 また、文字コードについて実は、まだあまり理解できていないのですが、PERLでスクリプトを書く場合、 use utf8; は付けずに書いております。これは、書いた方が良い物でしょうか? とりあえず、不具合無く動いて居るように見えています。 BOMについて、Wikipediaへのリンクありがとうございます。よく使うOSはWindowsが多く、WindowsではBOMが無い場合動かないこともあるのですね。とても勉強になりました。 しかし、UTF-8でややこしいことが無くなったという印象を持っていたのですが、なかなかうまくいかない物ですね。

すると、全ての回答が全文表示されます。
  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.1

UTF-8 >色々試行錯誤して、3日ほど悩んだ結果、相手のパソコンで編集(Vista)すると、BOMというものが付くことが分かり、 メモ帳を使わなければいいのでは?

utsumi_ya
質問者

お礼

回答いただきありがとうございます。 それはそうなのですが、パソコン初心者(Wordとメモ帳の違いが分からない)の方に、手軽に編集して貰うには、拡張子を.txtにしてメモ帳で編集できるようにするのが最も負担が少なく、これ以外の手段がないところなのです。 また、ややこしい問題は、UTF-8なら全て解決していたと思っていたのですが、思わぬ落とし穴があったという気がしています。

すると、全ての回答が全文表示されます。

関連するQ&A