Perl:ドイツ語のウムラウト文字の置換ができなくて困っています

このQ&Aのポイント
  • Perl初心者です。ドイツ語のウムラウト文字の置換ができなくて困っています。環境はWindowsXP + ActivePerl v.5.8.7 です。
  • *にアルファベットや日本語を入れたときは、"a"に置換されるのですが、ドイツ語の"アーウムラウト"を入れると置換されません。
  • 文字コードを調べたりしたのですが、解決策が見つからずにこまっています。きっと、基本的なことがわかっていないのだと思います。お助けください。
回答を見る
  • ベストアンサー

Perl:ドイツ語のウムラウト文字の置換ができなくて困っています

Perl初心者です。ドイツ語のウムラウト文字の置換ができなくて困っています。 環境はWindowsXP + ActivePerl v.5.8.7 です。 以下のスクリプトを実行しています。 === use strict; use warnings; use encoding 'utf8'; my $txt = "*"; print "Pre: $txt\n"; $txt =~ s/*/a/; #置換 print "After: $txt\n"; === *にアルファベットや日本語を入れたときは、"a"に置換されるのですが、 ドイツ語の"アーウムラウト"を入れると置換されません。 文字コードを調べたりしたのですが、解決策が見つからずにこまっています。 きっと、基本的なことがわかっていないのだと思います。 お助けください。

  • Perl
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

正規表現など部分文字列の判定・抽出をおこないたいなら, use encoding 'utf8';(UTF8バイト列)ではなく use utf8;(UTF8文字列)を使います。 http://www.horse-water.mydns.jp/tips/tips_P00022.html === use utf8; binmode STDOUT, ":utf8"; my $txt = "Wie sp辰t ist es?"; print "Pre: $txt\n"; $txt =~ s/辰/a/; print "After: $txt\n"; ===

Chyori
質問者

お礼

無事、問題解決できました!早速のご回答ありがとうございました。 バイト列、文字列の違いは全く意識できていませんでした。 もっと勉強しなきゃ、です。

関連するQ&A

  • ドイツ語のウムラウトの大文字の出しかた

    ドイツ語のウムラウトをワードで出す場合、小文字のウムラウトは分かるのですが、大文字のウムラウトの出し方が分かりません。よろしくお願いします。

  • Perlを始めたんですが

    プログラミングを始めようと思ってPerlをしているのですが プログラムを書いて開くとすぐに画面が消えてしまいます ActivePerlというのはいれてあります 書いたプログラムはこんなものです use strict; use warnings; print "Hello world";

    • ベストアンサー
    • Perl
  • ドイツ語やフランス語の特有文字(ウムラウトなど)

    ドイツ語やフランス語の特有文字(ウムラウトなど)が読み取れるocrソフトを教えてください。とりわけフリーのがあればうれしいです。

  • ドイツ語のウムラウトについて

    ドイツ人のメル友と英語でメール交換しているのですが、たまにドイツ語を使おうとしても、ドイツ特有の文字やウムラウトなどが出てきません。ウムラウトは文字一覧で探すとあるのですが、クリックすると上の2つの点が消えてしまいます。どのようにしたらいいでしょうか。 私のPCはSONYのPCV-X30/BPでOSはWINDOWS ME、ソフトはOFFICE 2000が入っています。メーラーはOUTLOOK EXPRESSです。 当方、パソコンにはめっきり疎いので、わかりやすく説明していただけないでしょうか。

  • use strictが効かない (PERL)

    たびたびお世話になっております。 PERL version 5.14.2 をWindows 7 のコマンドプロンプトから起動して使っています。 use strict; と一行目に書くと 宣言されていない変数があれば拒絶されるとのことで #!/usr/bin/perl use strict; use warnings; $a = 10; print "$a\n"; というスクリプトを書きました。が、すんなり動いてしまいます。 use strict; は どうすればうまく効くのでしょうか。 ご指導お願いします。

    • ベストアンサー
    • Perl
  • フォルダ内のファイルを全て開き文字列置換

    こんばんは。Perl超初心者です(プログラミングの初心者でもあります)。 フォルダ内にあるすべてのファイルに対して、正規表現を使った文字列置換をしたいのですが、うまくいきません。アドヴァイスをいただけないでしょうか。 具体的には、あるファルダの中に100個程のファイルがあって、その中の改行が3回連続している部分を、「改行+[SAMPLE]+改行」に置換をしたいと表います。 Windows XP Professional SP3 / ActivePerl 5.10 の環境で、以下のように記述したのですが、「Missing $ on loop variable at insert.pl line 5.」とエラーになってしまいます。どこで、間違ったのでしょうか(というか、まるでダメなスクリプトかもしれませんが…)。 use strict; use warnings; my @filename = glob "*.txt"; foreach open(FILE, "$filename(@filename)") { my @content =<FILE>; @content =~ s/\n{3}/\n[SAMPLE]\n/g; print FILE @content; close(FILE); } どなたか、ご教示いただけると非常助かります。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • perl5.8.6日本語の置換について

    教えてください。perl5.8.6の日本語処理で行き詰まっています。 下記のプログラムをeuc-jpで書いて動作させたところ、s///gの 置換がうまくいきません。 何か間違っているのでしょうか。 weather.pl --------------------------- #! /usr/bin/perl # 使い方: # require "weather.pl"; # $data=weather; use LWP::Simple; use strict; use encoding 'euc-jp'; use Encode qw/from_to/; binmode STDERR,"encoding(euc-jp)"; sub weather{ my $doc; my $adrs = "http://www.jma.go.jp/JMA_HP/jp/warn/text/27.html"; until($doc){ $doc = get "$adrs"; } from_to($doc,'shiftjis','euc-jp'); $doc =~/<tr><td><pre>(.+)<\/pre><\/td><\/tr>/s; $doc = $1; $doc =~s/」/ /g; $doc =~s/パーセント/%/g; $doc =~s/[0-9]/[0-9]/g; $doc; } 1; my $result=weather; print "$result\n"; ---------------------------

    • ベストアンサー
    • Perl
  • perl ハッシュ エラー

    現在perlの勉強中で、ハッシュの項目まできました。しかし、use strictにするとこのコードがエラーになります。 #!/usr/bin/perl use strict; use warnings; print "Content-type:text/html\n\n"; $hoge{"key1"} = "value1"; print $hoge{"key1"}; exit; ヴァージョンは5.8.9です。use strictをコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • perl 5.8.8 日本語マッチ

    perl5.8.8を使っています。 日本語にマッチする正規表現を書きたいのですが、どうしてもマッチしません。 例えば、以下のファイルtest.txtから「さしすせそ」だけを抽出し、表示させたいです。 ---------test.txt-------------------------------- あいうえお かきくけこ さしすせそ たちつてと -------------------------------------------------- ----------test.pl-------------------------------- use strict; use warnings; open(FILE, 'test.txt') or die "$!"; my @file = <FILE>; close(FILE); foreach my $line (@file){ if($line =~ /^さ/){ print "$line\n"; } } ------------------------------------------------ このtest.plを実行しても「さしすせそ」を抽出することが できません。 どうしたらよいのでしょうか? 自宅の新しいバージョンのperlだとできるのですが 会社のperlは5.8.8で顧客環境でもあるのでバージョンアップも できません。 すみませんが、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ドイツ語ページの作り方

    現在ドイツ語のホームページを作ろうとしていますが、ウムラウトなどドイツ語特有な文字を表示することができません。 まず、ドイツ語翻訳自体はunicodeのtxtデータで用意しました。これをDreamweaverの環境設定でiso88591-1の文字コードの指定をして、翻訳テキストをコピー&ペーストで貼り付け、作成しました。 しかし、ブラウザで確認してもウムラウトなどの文字が表現できていません。 どうしたらきちんとドイツ語表示できるのでしょうか? 教えてください!!

専門家に質問してみよう