• ベストアンサー

Perlでテキスト処理をしたいのですが・・・

BLUEPIXYの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

(1)5.8以上のバージョンでは、日本語を扱えるようになりました。 質問文の内容での文字化けは、他の回答者も答えられているようなshift_jisに起因するものだと思います。 プログラムの最初に use encoding 'shiftjis'; とすることで、入力ファイルがシフトJISであることを認識し、内部的にunicodeで処理するようになるので、大丈夫です。 (2)(1)でも述べたように5.8以上で標準的に日本語(ユニコードによるので日本語とは限らない)が扱えるようになったので、今後バージョンアップはされなくなると思います。

Chiaki---
質問者

お礼

返答ありがとうございます! さっそく試したいと思います。

関連するQ&A

  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • テキストエディターの文字化け

    素人の者です。 これまで、PHPのプログラムの書き込みをSJISで行ってきましたが、どうもネット上を調べているうちにSJISはあまり使わないほうが良いようなことが書いてあったので、UTF-8で書くことにしようと思いました。そして、UTF-8で書いていてWEB上は特に問題なく文字化けもせず表示されるのですが、テキストエディターで再度ファイルを開くと、テキストエディター内で文字化けしていることがあります。メモ帳で開くときはファイルの文字コートをUTF-8に指定すれば文字化けしません。サクラエディターで開けば、何もしなくても文字化けしません。php_editor_stdで開けば、文字化けします。ez-HTMLで開けば、文字化けします。???とこんな具合です。テキストエディターを開くときにエンコードを指定して開けば、文字化けはしないであろうと考えて、設定の部分を色々と探していじってみても、文字化けの現象は変わりません。SJISですと、ダメ文字とかあるのでやはり切り替えていったほうが良いと思い試している最中です。テキストエディターで文字化けした場合、どのようにすれば解消するのかお分かりになる方がおりました教えていただけないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Shift-jisのPerlから、UTF-8、EUC、Shift-jisの3つのエンコードテキストを生成

    Shift-jisで作ったPerlにて、テキストをEUC、UTF-8、Shift-jisにエンコードし外部検索サイト等にテキストリンクを飛ばしたいのですが、うまくいきません。 過去ログにUTF-8から、EUC、UTF-8、Shift-jisへのエンコード方法をみつけ http://oshiete1.goo.ne.jp/qa3745875.html 試行錯誤しましたが、Shift-jisからはうまくいきませんでした。 perl のバージョンは5.8.8です。 ご教示のほどよろしくお願いします。

    • ベストアンサー
    • Perl
  • perlで読み込むテキストの文字コードは一般に何?

    Perl初心者です。 perlで簡単なソフトを作り、時々変化する情報をテキストファイルから読み込むようにしています。 昔は、Shift-jisでしたが、文字化け対策が嫌になり、UTF-8に統一しました。 皆様は、何を使われていますでしょうか? また、読み込みや出力には、そのファイルの文字コード指定していますか? 質問させていただいた動機について(無駄に長いです) 最近パソコン初心者の友達へ、プログラムを作ってあげたのですが、どうもうまく動かない。 設定ファイルに書いてある内容が何か合わないようです。 色々試行錯誤して、3日ほど悩んだ結果、相手のパソコンで編集(Vista)すると、BOMというものが付くことが分かり、とりあえず、それを削除することで無事動作致しました。 UTF-8であれば、文字コードなど気にせず万能だと思っていたのですが、これだけ悩まされると、UTF-8以外の方にもっと良い方法があるのではないかと思い質問させていただきました。

    • ベストアンサー
    • Perl
  • サーバ上のテキストファイルの文字化けについて(iMac/Safari)

    お世話になります。 当方Windousユーザーでサイト制作に関わっています。 Macの環境が身近になく困っています。 あるサイトからテキストファイルにリンクしているのですが そのテキストファイルの文章がiMacのSafariで見ると文字化けします。(MacOS X10.3.9、Safari 1.3.2 (v312.6)) 念のためShift-JISとUTF-8等でそれぞれ保存した別ファイルでテストしてみたところ、 UTF-8では、正常に表示されたもののShift-JISでは文字化けします。 ちなみにWindowsXPのSafariや、MacBookのSafariだと問題なく表示されます。 (MacOS X10.5.2、Safari 3.1.1) これは、このバージョンの問題なのでしょうか? UTF-8のテキストファイルにリンクする以外の改善方法をご存知の方はいらっしゃいませんか? いらっしゃいましたら、教えていただけないでしょうか? 宜しくお願いいたします。 ※何か不足している情報があれば調べますので、ご指摘ください。

    • ベストアンサー
    • Mac
  • 文字コード変換

    送信元のページがShift_JISの場合は正常に動作するのですが、 UTF-8等の場合は文字化けしてしまいます。 &jcode'convert(*val, 'sjis'); ↑のものを use Encode; Encode::from_to( $val, "UTF8", "Shift_JIS", Encode::XMLCREF ); このように書いたところ、UTF-8も文字化けしないのですが、 コードを自動的に認識して自動で振り分けさせる方法がわかりません。 サーバーのPerlのバージョンは5.8.6です。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ソラリス8のperl5.8が漢字を正しく表現しない

    Solaris8(SPARC)にperl5.80をインストールしました。 下記スクリプトを実行すると ------------------------------ #!/usr/local/bin/perl use encoding "sjis"; printf("噂のC言語\n"); ------------------------------ 出力される文字が 奄フC言語 となってしまいます。 漢字コードはシフトJIS(ja_JP.PCK)を設定しています。 上記スクリプトは、Windows-2000上のperl5.80では、 正しく「噂のC言語」と出力されます。 同一条件(soralis8(SPARC) perl5.80 (ja_JP.PCK))で 正しく日本語を表示出来た方は、おりますでしょうか。 また、この文字化けの改修方法をご存じの方、おりましたら教えてください。

  • VB6のテキスト処理 さまざまな文字コード/改行で対応

    VB6のテキスト処理で、Open InputとLine inputを使った場合に 文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。 改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか? また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

  • JIS C 6226(旧JIS)コードをパソコンで認識表示したい。

    測定装置から旧JISコードでデータが出力されていると思われますが、これをハイパーターミナルやTera Termで認識する方法を紹介してもらったんですが日本語を認識できません。Tera Termは旧JISデータ対応かと思われたんですが結果的にはハイパーターミナルと同じでした。シリアルポートからの旧JISを認識して、SJISで表示させるプログラムは無いでしょうか?探してみたんですが見つかりませんでした。前に無理じゃないかと助言を頂きましたが・・・。 それか旧JISコードをJISで受けて、JISで文字化けしたしたテキストファイルから逆に旧JISコードを認識させ改めてSJISに変換させることは可能でしょうか?ハイパーターミナル等で文字化けしたテキストを変換できないでしょうか?教え下さい。

  • C#でテキスト読込時、文字コード誤りを防ぐには?

    Visual C# 2005です。 現状、入力パスのテキストを文字コードSJIS("shift_jis")として読み込んで処理を行う、 というツールがあるのですが、 オペミスで、入力パスに、文字コードEUC("euc-jp")のテキストが格納されていた場合、 現状は、処理の途中で、 「入力文字列の形式が正しくありません。」や 「オブジェクト参照がオブジェクトインスタンスに設定されていません」 等の例外となってしまいます。 これ(テキストがEUCであることを検知、又は、SJISでないことを検知) を事前(実行ボタン押下直後)に確認する方法はないでしょうか? 厳密にチェックする方法がなければ、可能性の示唆でもかまいません。 また、SJIS⇔EUCが逆の場合(EUCであるべきテキストがSJISであった場合)も知りたいです。 よろしくお願いします。 因みに、テキストを用意する人とツールを実行する人(素人)は別の人なので、 画面に「事前に文字コードを確認して下さい」と表示しても無意味とのことです。