- ベストアンサー
utf-8のコードを使ったPerlの改良方法
- 他の人が作ったPerlを改良する際に、半角ひらがなの文字を取得する方法について説明します。
- 現在のコードでは英数字の場合は正常に取得できますが、半角ひらがなが入ると取得できない問題があります。
- コードの右辺を変更することで、半角ひらがなも正常に取得できるようにすることができます。また、エンコードとしてutf-8を使用することも可能です。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
UTF-8を使うのであれば、 Jcode.pm を使うといいと思います。
その他の回答 (7)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
繰り返しますが、CSVはアプリケーション依存です。様々なフォーマットがあります。 1) ,,間に,があるとき\,でエスケープする 2) ,,間に日本語があるときは全体を""で囲む 3) ,,間に"があるときは\でエスケープする などがあると思います。 それらがわからないと正規表現は書けません。 詳しくは、 CSV形式の行から値のリストを取り出す ( http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values ) 以降の記事をお読みください。
- wormhole
- ベストアンサー率28% (1626/5665)
あなたが行いたいことは本当に「csvのカンマからカンマの間に入っている文字を取得する」なのでしょうか? >$output =~ s|/\*\s(([A-Z0-9_])+)\s\*/|$D->{$1}|g; の右辺は正規表現部分は、カンマ~カンマの間をあらわすようなものではないですけど。 ぱっと見、 "/*空白文字"~"空白文字*/"で囲まれたアルファベット大文字・数字・アンダーバーで 構成された文字列 なのですが。
- Tacosan
- ベストアンサー率23% (3656/15482)
「文字の取得ができない」というのは, 具体的にはどのような入力に対してどのような結果を期待しているところでどのような答えになってしまうのですか? あと, $output =~ s|/\*\s(([A-Z0-9_])+)\s\*/|$D->{$1}|g; は何を意図しているのですか? 「csvのカンマからカンマの間に入っている文字を取得する」こととの関連性が見えないのですが. できればファイルのオープンとか読み込みの部分も見たいねぇ.
- namboku
- ベストアンサー率50% (2/4)
「半角ひらがな」を含む入力ファイルというのは、一般にはないと思いますが、どのようなエンコードでしょうか? 半角カタカナであれば、入力ファイルのエンコードは特に気にする必要はないと思います。 「csvのカンマからカンマの間に入っている文字を取得する」ということは「カンマを区切り文字と考えて、カンマの間にある文字や数字を取り出す」ということであれば、split関数が使えます。 例えば、入力ファイル(input.csv)が ABC,アイウエオ,10000 DEF,カキクケコ,20000 GHI,サシスセソ,30000 というcsvファイルであれば、下記のスクリプトで open(IN1,"input.csv"); open(OUT1,">output.txt"); while ($line1 = <IN1>) { chomp($line1); my $tmp = $line1; @in1 = split(",",$line1); $out1 = join("\t",@in1); print OUT1 "$out1\n"; } close(IN1); close(OUT1); $in1[0]にABCやDEF、GHIが入り、$in1[1]にアイウエオ、カキクケコ、サシスセソなどが入ります。
お礼
本当に素人で申し訳ございません、「全角ひらがな・漢字を使いたい」の間違いでした 何卒よろしくお願い致します。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
そもそも、そのCSVファイルの文字コードはなんですか? また、CSVは、アプリケーション依存のファイルで、excelから出力されたものと、perlなどから出力されたものは異なります。 ・CSVファイルの文字コード ・CSVのフォーマット 最低限この情報がないとなりません。なお、「半角ひらがな」は、どの文字コードにもありません。
お礼
本当に素人で申し訳ございません、「全角ひらがな・漢字を使いたい」の間違いでした 何卒よろしくお願い致します。
- salsberry
- ベストアンサー率69% (495/711)
UTF-8に「半角ひらがな」は存在しないはずですが、半角ひらがながある文字コードって何ですか? それとも、半角カタカナの書き間違い?
お礼
本当に素人で申し訳ございません、「全角ひらがな・漢字を使いたい」の間違いでした 何卒よろしくお願い致します。
- wormhole
- ベストアンサー率28% (1626/5665)
半角ひらがなというのは一般に使用されている文字コードでは存在しませんが。 いわゆる半角カナの間違いでしょうか?
お礼
本当に素人で申し訳ございません、「全角ひらがな・漢字を使いたい」の間違いでした 何卒よろしくお願い致します。
お礼
本当に素人で申し訳ございません、「全角ひらがな・漢字を使いたい」の間違いでした 何卒よろしくお願い致します。