• ベストアンサー

文字化け

burnの回答

  • ベストアンサー
  • burn
  • ベストアンサー率65% (25/38)
回答No.1

こんにちは。 ソースコードが判らないので、正確な答えにはなっていません。 ヒントにして頂けたら・・・と思います。 現時点で考えられる原因として、以下の事が考えられます。 1.HTMLにメタタグでエンコード指定がされていない為。 2.クライアント(入力者)のPCがマッキントッシュである。この場合、通常、Windowsから送られてくる文章の改行コードは、CR/LFであるのに対して、マッキントッシュは CRのみとなります。 サーバーのPerlの中で、改行コードを統一してやらないと、文字化けを起こす事があります。 多分、これが原因だと思います。 ちなみに、サーバーがUNIX系(通常はこれ)であれば、改行コードはLFになります。 この改行コードを統一にするPerlの構文を下記に載せておきます。 $val =~ s/\r\n/\n/g; $val =~ s/\r/\n/g; ではでは

nachan
質問者

お礼

早早のご回答、ありがとうございました!・・・にもかかわらず、お礼が遅くなってしまい、申し訳ありませんでした。 testができないので(自分のPCがWin)解決できたかどうかはまだわかりませんが、お答えいただいた2番で対応してみました。 お忙しいなか、ほんとうに有難うございました m(_ _)m

関連するQ&A

  • cgiスクリプトの文字化け

    既存のCGIライブラリ(cgi-lib.plとjcode.pl)を用いて、登録フォームを作りました。しかし、「入力」を押して、CGIを作用させると、文字化けがおこってしまいます。 cgiのなかで、文字コードをeucに変換しています。(jcode::convert機能)サーバーのCGI設定は全て確認しましたし、パーミッションも確認しています。文法などはあってると思いますし、ディレクトリ、文字コード(euc)・改行コード(LF)も確認しています。 他に原因があると思うのですが、回答よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • 文字化け

    登録フォームを作成し、入力した内容でDBに追加を行うなかで、PHPmyadminで実際に見てみると文字化けしています。 レンタルサーバ(OS:linux) (1)登録フォーム(shift_jis) ↓各値を渡す (2)確認ページ(shift_jis) ↓各値をmb_convert_encoding(shift_jisに変更) (3)追加 すると文字化けします。 以前、cgi-lib.plを用いてperlで書いていたものは、 文字化けしていません。 どこがおかしいのでしょうか? ちなみに (1)登録フォーム(euc-jp) ↓各値を渡す (2)確認ページ(euc-jp) ↓各値をmb_convert_encoding(euc-jpに変更) (3)追加 としても文字化けしています。 (DBだけでなく、ページ全体も)

    • ベストアンサー
    • PHP
  • Jcode.pmでの半角カナ→全角カナ変換

    Webフォームから取得したデータに半角カナが含まれていた場合の文字化け対策として、Jcode.pmを使用して、下記のようにEUCに変換しています。 use Jcode; $euc_string = jcode($form_input)->h2z->euc; 原理的には間違ってはいない筈ですが、ほとんどの場合、$form_inputの文字コードの判別に失敗(恐らく半角カナをEUCと誤認)し、文字化けしてしまいます。誤認しないように、下記の様に記述すれば、正しく全角カナに変換してくれます。 use Jcode; $euc_string = jcode($form_input,"sjis")->h2z->euc; ただ、入力コードがシフトJISとは限りませんので、この記述は好ましくないと思っています。 半角カナの文字化けは、webフォームを作られた方なら皆さん経験されていると思うのですが、どうされているのでしょうか? Jcode.pmの文字コード判別は、半角カナが混じっていた場合、かなり長い文字列でないと判別に失敗するようなので、フォームで短い文字列(名前等)を入力させて処理させた場合、ほとんど上手く動かないようなのですが?

    • ベストアンサー
    • Perl
  • メールフォームから届くメールが文字化けしてしまいます・・・

    私の通ってる学際で利用するホームページを作ってます。アンケートフォームに無料cgiのpostmailというものをつかわさせてもらっています。 KentWeb http://www.kent-web.com/data/postmail.html ですが、設置したメールフォームから届くメールの一部が文字化けしてしまいます。 調べたら半角カタカナを入力すると文字化けするみたいです。 半角カタカナを入力しても文字化けしない方法を教えて下さい。又、これの他にいいメールフォームcgi(無料)があれば一緒に教えて欲しいです。 学際がもうすぐなのでできれば早く教えて欲しいです。 舞

  • 特定文字での文字化け

    DB(oracle)から抽出したものをPerl5でcsv出力しているのですが、特定文字で文字化けが起こってしまいます。 特定文字というのが、シフトJISの「拡張文字」と言われているものにあたるらしく、 0xED40~0xED9Eとか0xFA40~0xFA9Eとかです。 0xED40→ス、0xED9E→シ、0xFA40→。、0xFA9E→.となってしまいます。(文字を出したかったのですが、表示されなかったので文字コードにしました。) $strをDBより抽出した文字列として jcode::convert( \$str, "euc" ); : :(文字列の区切り処理) : jcode::convert( \$str, "sjis" ); ということをやっています。 以前、 &jcode'convert( $str, "euc" ); : :(文字列の区切り処理) : &jcode'convert( $str, "sjis" ); とやっていたのですが、この場合、 「半角カナ+文字コードが7cを含む文字」 が文字化けを起こしていました。 これを修正するために前者のような修正をしたのですが、 間違っているのでしょうか? すみませんが、よろしくお願いします。

  • jcode.plの使い方

    最近cgiを始めたばかりの者です。 HTMLでフォームを作り、 FORM action="view.cgi"method="GET" でcgiに渡すようにしました。 CGIで受け取った文字に全角があると %83%8B%83i%83e%83B%83N%83X のような文字化けをします。 調べてみたところjcode.plを使えば 文字化けを回避できるようですがうまく いきませんでした。 質問1.jcode.plを読み込ませるのは 上記のview.cgiで良いのでしょうか。 質問2.require "jcode.pl";といれた後 具体的にどのように受け取ったデータを jcodeに渡せばいいのでしょうか? @data = split(/&/,$ENV{QUERY_STRING}); で@dataに受け取った情報を渡しています。 ご教授頂ければと思います。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 機種依存文字の文字コード変換

    現在、Shift-JISでCGIを作成しています。言語はPerlです。HTMLファイルから送信された文字をDBに登録するのですが、CGIをShift-JISで作成しているのに、DBがEUCとなっているため、jcode.plを利用して文字コードを変換しています。 しかし、文字が機種依存文字である場合、jcode.plでは文字コード変換ができないようで文字化けを起こした文字をDBに登録しようとしてエラーを起こしてしまいます。 何とか機種依存文字をコード変換したいのですが、可能でしょうか?

    • ベストアンサー
    • Perl
  • Jcode を使った複数選択値の文字コード変換について

    フォームから受け取った文字コードの処理において、普段下記の通りにしております。 use Jcode; &ReadParse; while(($k,$v)=each %in){ &Jcode::convert(\$v,"euc");} 基本的に元htmlがsjisだろうがutf-8だろうが問題なくeucに変換されているのですが、 複数選択(フォーム側がチェックボックスなどで、NAME値が複数ある場合)された変数だけは、eucに変換されず文字化けしてしまい、肝心の区切り文字である「\0」も消えてしまう状態です。 &Jcode::convert(\$v,"euc");の部分を、$v にしたり *v にしたり色々してみたのですが、複数選択が正しく処理されているときは単一項目がうまくいかなかったりという状態です。 getcodeで調べてみると、複数選択のフォームのコードは ucs2 となっていました。(元のhtmlはeuc。) 試しにvalue値を全て半角英数にしてみたのですが、同じく ucs2 と出ます。(単項目は euc と出ます。) 「\0」が含まれた文字列の変換を行う場合は、何か特別な処理が必要でしょうか?

    • ベストアンサー
    • Perl
  • ver.5.8.8の文字化け

    サーバの移転でアクセスログを変更しているのですが、CGIで苦戦しています。 テキストデータが全て文字化けをしてしまいます・・・。 エキストデータ、ソースは全てSJISです。 perlのバージョンが5.8.8になりましたので、それまで使用していたjcode.plが使えないようです。 require './jcode.pl'; jcode::convert($refer, 'sjis') if ($charset); でエラーになります。 jcode.pm用に use Jcode; Jcode::convert($refer, 'sjis') if ($charset); としてもエラーになります。 これはjcode.pmが入ってないからだと思うのですが、 何か方法はないでしょうか? PHPはわかるのですが、Perlは全然わかりません。 どうか、ご教授をお願いします。

    • ベストアンサー
    • Perl
  • EUCの文字化けについて質問です。

    EUCの文字化けについて質問です。 エディタは秀丸を使っています。 ・名前をつけて保存→文字コードをEUC ・その他→ファイルタイプ別の設定→保存読み込み→文字コードをEUC 上の二つを試しましたが、日本語を記入してあったところ(コメントにしてありました)が 漢字だらけになって表示されてしまいます。 半角英数の部分はきちんと表示されています。 プログラム上は支障はないとは思うのですが、 コメントが読めなくて困っています。 どうか良い解決法をお教え下さい! マシンはウィンドウズです。