- ベストアンサー
文字置き換えのエラーについて
初めて、質問いたします。 実は文字の置き換えについてなのですが、 他の文字は置き換えできるのですが、 s/ゼ/ぜ/g;だけ置き換えが出来ません。 この指定をするとブラウザ画面が白くなり何も表示されません。 ちなみに、逆のs/ぜ/ゼ/g;であれば置き換えが出来ます。 なぜ置き換えが出来ないのか教えて下さい。 出来れば、この文字が置き換えが出来るようにしたいです。 よろしく、お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんなのはどうですか? $target = quotemeta('ゼ'); s/$target/ぜ/;
その他の回答 (1)
- okiyoshi
- ベストアンサー率34% (11/32)
回答No.1
使用文字コードはshift-jisとして、 "ゼ"は16進で"\x835b"、2バイト目の"5b"は文字としては"["、 正規表現で"["は文字クラスの開始を表すのでエラーでは? s/ゼ/ぜ/g ↓ s/\Qゼ\E/ぜ/; [perl \Q \E]で検索してみてください。
質問者
お礼
いろいろ、ご面倒をおかけしました。問題は解決できました。 ありがとうございました。
質問者
補足
ご回答ありがとうございます。 s/\Qゼ\E/ぜ/;で試してみましたが、エラーにはならないのですが、 変換後の表示が、「ぽbロコぽ」と文字化けを起こして変換できませんでした。 [perl \Q \E]で検索してみたのですが、初心者なので良くわかりませんでした。どうしたらいいのか教えて下さい。 よろしくお願いします。
お礼
また、わからないことがあったら、質問しますので その時はよろしくお願いします。 ありがとうございました。
補足
ご回答ありがとうございました。 quotemetaを検索して、どのような関数かを調べて納得でした。 問題解決できました。本当にありがとうございました。