• ベストアンサー

テキストエリアに半角「\」または「%」と入力すると文字化けするので良い方法はありませんか?

ついこの間質問した件ですが、うまくいかなくなり、 わかる方ご伝授お願いいたします。 入力テキストエリアに「\」または「%」と入力すると文字化けするので、 何か良い解決策はありませんか? 教えていただいた方法で、「\」と入力した場合、 $tmp = '\'; $tmp =~ s/\\/¥/; #(2)\-->¥ 処理を追加してみたのですが、 5Cコード処理("表\示" や "予\約" のように、バックスラッシュを補完する処理) をしたあとに、この上の\→¥を行うと、表示と予約が文字化けになります。 「\」または「%」を全角にしてしまう方法はありますか? 教えて下さい。

  • Perl
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.5

> EUCで保存してあるものをShiftJISとして > 表示させたい場合はどのように表示させれば > いいのでしょうか?もしかして、 > 深く考える必要はないのでしょうか? 深く考える必要はありません。 出力するときにShiftJISに戻すだけです。 Jcode.pmを使ってる場合でソースコード上はEUCの場合、 print jcode("あいうえお","euc")->sjis; または、 $value = "あいうえお"; #EUC $value = jcode($value,"euc")->sjis; #ShiftJISに変換 print $value; #出力はShiftJIS というような感じです。 jcode.plを使ってる場合も同じように出力直前でShiftJISに戻せばOKです。 なお、Perl 5.8.xの場合は、ソース上で指定することで簡単にソース上とは違う文字コードでの出力の指定が可能ですがここでは割愛します。

sara555
質問者

お礼

回答有難うございます。 わかりやすい説明をしていただいて、 理解できそうな気がします。 少しずつ理解を深めていこうと思います。 本当に有難うございました。

その他の回答 (4)

  • feininger
  • ベストアンサー率41% (74/180)
回答No.4

ソースがEUCで、出力をSJISにしたい場合はjcodeなどで変換する必要があります。 ソースがEUCの場合、EUCでの出力を前提とするのが通常かと。 混乱の原因は「どこで\などに注意しなければならないか?」が明確になっていないことだと思います。 ソースをEUCにすると、ここのところをあまり注意しなくても済みますが、 SJISでソースを記述してもちょっとした注意で回避できます。 注意といっても、ダブルクォーテーション/シングルクォーテーションの使い分けと、 正規表現のメタ文字くらいかな。 この2点に注意していれば大丈夫ですよ。 > 「\」または「%」を全角にしてしまう方法はありますか? ちなみに、文字列のコードがSJISの場合、 「\だけを¥に変換」という処理は結構面倒なロジックが必要になります。 無理に変換して文字化けを回避するより、2点に注意して文字化けを回避したほうが楽なんじゃないかなぁ。

sara555
質問者

お礼

回答有難うございます。 わかりやすい説明をしていただいて、 理解できそうな気がします。 少しずつ理解を深めていこうと思います。 本当に有難うございました。

  • estea
  • ベストアンサー率44% (39/87)
回答No.3

文字コードの変換は Jcode.pm とか jcode.pl とか nkf とかあれとかこれとか... いろいろある予感 EUCで保存したのをSjisにして出力してもいいし、 HTMLならタグでEUCコードであることを示してやれば そのまま出力しても読めることが多いな。 鯖の設定にもよるが。

sara555
質問者

お礼

回答有難うございます。 わかりやすい説明をしていただいて、 理解できそうな気がします。 少しずつ理解を深めていこうと思います。 本当に有難うございました。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

$tmp = qq|表示\\|; #\|だと|がエスケープされてしまうので\\| $tmp =~ s/\\/¥/g; $tmp =~ s/表示/表\示/g; print $tmp; #表示¥ できればEUC等、ShiftJIS以外の文字コードを使うことをお勧めします。

sara555
質問者

補足

素早い回答有難うございます。 現在、文字はShiftJISで行っているのですが、 ShiftJISからEUCで変換し、保存すると、 EUCで保存してあるものをShiftJISとして 表示させたい場合はどのように表示させれば いいのでしょうか?もしかして、 深く考える必要はないのでしょうか?

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

> 5Cコード処理("表\示" や "予\約" のように、バックスラッシュを補完する処理) > をしたあとに、この上の\→¥を行うと、表示と予約が文字化けになります。 ヒント: これで気づきませんか? 「表\示」内の\も全角に変えてしまっているからです。

sara555
質問者

補足

回答有難うございます。 私も「表\示」内の\も全角に変えてしまっている からだと気づいていました。なので、何かいい方法 は、ないでしょうか?良かったら教えてください。

関連するQ&A

  • テキストエリアに「\1,000,000」と入力すると文字化けするので良い方法はありませんか?

    入力テキストエリアに「\1,000,000」と入力すると文字化けするので、 何か良い解決策はありませんか?\1,000,000はそのまま手入力で計算した 値ではありません。 また、テキストエリアですので、 \1,000,000 \1,000,000 で2行になる事もあります。その場合、改行コードなども関係してくると 思います。混乱してきたので、わかる方ご伝授お願いいたします。 半角\を入れると、全角¥に変換するなどです。 もしよければもうひとつ、半角数字、半角英字を全て、全角にする方法はありますか? 非常に困っています。良い解決策があれば教えて下さい。

    • ベストアンサー
    • Perl
  • 海外サーバでテキストフォーム入力文字の文字化け

    ASP対応の海外サーバを使用しています。 aspファイル内のフォーム(テキストエリア)に日本語で名前を入力して、そのままACCESS(MDBファイル)に書き出す処理をしています。 ブラウザは日本語表示されていますが、保存されたACCESSファイルの文字は、文字化けしています。 これから、ASP側から、ACCESSファイル内の文章に対して、日本語による『単語検索』処理をかけたいのですが、文字化けしたままで、動作に問題がでることはありますか? また、文字化けさせないようにする方法を教えてください。 海外サーバは、文字の数を扱う関数の『1文字の扱い』が、半角英数字を1文字とカウントします。 全角文字を1文字として判断させる方法はありますか?

  • テキストエリア入力文字数の表示で全角と半角を区別したいです。

    JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、 全角文字も半角文字も同じ1文字としてカウントされてしまいます。 入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか? ================================================================ /*テキスト入力フォームで文字数を表示する*/ function ShowLength( str ) { document.getElementById("inputlength").innerHTML = str.length + "文字"; } ---------------------------------------------------------------- <textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea> <p id="inputlength">0文字</p> ================================================================ 宜しくお願い致します。

  • 入力フォームから受け取ったテキストの文字化け対策をお願いします。

    現在入力フォームから変数を受け取って、確認画面を表示させたいのですが、テキストエリアから日本語を取得しようとしても文字化けしてしまいます。どういったことが原因なのでしょうか?IE、firefoxともに文字化けします。

    • ベストアンサー
    • PHP
  • テキストエリア

    テキストエリア内にデータ(HTMLソース)を入力し、HTMLファイルとして保存します。 しかし、問題がいくつも出てしまいました。 1.空白の処理・・・半角全角とも空白があるとそこまでのデータしか送れません。 2.複数行のデータが送れない。改行すると、1行目しかデータが送れません。 3.特殊文字。<や>などの文字があると、きちんと送れません。 どうしたらデータをそのままの形で送れるでしょうか?

    • ベストアンサー
    • Perl
  • Firefoxでのテキストエリアに入力した文字の改行

    Firefoxでのテキストエリアに入力した文字の改行について質問させてください。 http://oshiete1.goo.ne.jp/qa2691799.html ↑のページを参考にテキストエリアに入力したテキストがリアルタイムで確認できるページを作成しました。 IEではテキストエリア内の改行がちゃんと反映されたのですが、Firefoxではテキストエリア内の改行が反映されずに、エンターキーを押すと半角スペース?になるだけで一連の文として出力されてしまいます。 どなたかこの現象の解決策をお知りの方がいらっしゃいましたらご教授ください。 よろしくお願いします。

  • php テキストエリアの入力チェック

    現在、phpを使用してメールフォームを作成しております初心者です。 入力確認画面(二画面目)において テキストエリア(お問い合わせ内容入力エリア)内の入力内容が ・半角もしくは全角スペースのみ ・テキストエリア未入力で初期値  【 こちらにお問い合わせ内容を入力! 】 のままの場合のチェック&エラーメッセージを表示させたくて 下記のようなphpソースを記述してあれこれやってるのですが思うようにいきません。 テキストエリアに半角英数、全角文字が入力された場合は 思い通りにチェックを通過します。 しかし・・・ ・全角スペース1文字分以上 ・半角スペース2文字分以上 入力された場合もチェックを通過してしまいます。 半角スペース1文字分までの入力の場合はエラーメッセージを表示してくれるのですが・・・ ~前略~ <?php //お問い合わせ内容 if ($contents == " " || $contents == "こちらにお問い合わせ内容を入力!") { $errormsg[] = "お問い合わせ内容を入力して下さい"; } ?> ~後略~ 当方まだまだphp初心者れべる故、わかりやすくご回答頂けると有難いのですが・・・ どなたかご回答宜しくお願い致します。

    • ベストアンサー
    • PHP
  • フォーム処理中の文字化け

    質問させていただきます。 フォーム処理中に、能という文字などにバックスラッシュがついてしまい、困っています。 フォーム→フォーム処理内容確認→ログファイル書き込みというスクリプトを作成したのですが、フォーム入力後、フォーム処理内容確認の段階では能などにバックスラッシュはついていません。 しかし、ログファイルに書き込んだ後、ログファイルを確認してみると 能の後にバックスラッシュがついてしまいます。 これは、ログファイルの文字エンコードの問題なのかとも思ったのですが、何をしてみても取り除くことはできませんでした。 このバックスラッシュを取り除く方法を教えてもらえないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • テキストエリア内の一部のみ文字化け

    イントラネット内の送信フォームのテキストエリア内の文字の一部が、時々文字化けします。 これが今だに未解決。 印象としては、特定の従業員のパソコンから送信するときにそうなるような気がします。かといって、どのパソコンもハードは違うが、同じOS、ブラウザの設定です。

    • ベストアンサー
    • CSS
  • IrfanView、挿入テキストの文字化け

    OSは WindowsXP HomeEdition SP2 です。 IrfanView32 ver.3.98 日本語版を http://www8.plala.or.jp/kusutaku/index.html でダウンロードしました。 このソフトの機能「選択範囲にテキストを挿入」のやり方で困っています。 半角文字は正しく挿入されますが、全角文字が正しく挿入されず文字化けします。 たとえば abc日本 と入力すると、 abc"u-{ という感じのテキストが表示されます。 文字化けさせない方法を教えてください。

専門家に質問してみよう