• 締切済み

UTF-8 フラグ?で文字化けしました助けてください

http://rev.go2.jp/MTAmazon.txt http://www.majordojo.com/projects/MTAmazon/downloads/ これなんですが 結論から言えば文字化けしてしまい困っています。 Movable Typeのplug-inなのですが構築すると上記のplug-inで出力した文字列のみが文字化けしないでその他の日本語文字列のみが化けます。 また、上記のplug-inで英数字のみの出力とした場合は正常に動作します。(文字化けしません) そして、設置するサーバーによって文字化けしなかったり、したりしています。Perlのバージョンの違うサーバーです。 どうやらPerlのせいと言うところまでは突き止めました。 そして、Perlの文字化け関連を漁っているとUTF-8フラグの存在が明らかになりました。 しかし、改造と言っても私に出来るのはコピペぐらいなので適当に先頭にuse utf8;とかplug-inのファイルをutf8エンドコードしてアップしてみたりuse encoding 'utf8';とか書いてみて全部文字化けしちゃったりして・・ でも手応えとしてはUTF-8フラグが問題なのかなという思いは強くしました。use encoding 'utf8';を追加する以外の改造は出力に変化はありませんでした。 # Perl のバージョン: 5.8.3 # Perl のバージョン: 5.8.7 サーバーは上記のPerlのバージョンで正常に動かしたいのです。 http://rev.go2.jp/は5.8.7の方のテスト環境です。出力した文字列以外が文字化けしている様が見られます。 http://rev.go2.jp/MTAmazon.txtはMTAmazon.plだけおいてみました。 よろしくお願いします

みんなの回答

  • to_kyo
  • ベストアンサー率41% (7/17)
回答No.2

>しかし、改造と言っても私に出来るのはコピペぐらいなので ・・・同じくらいのレベルのわたしですが、 こういうときは エンコード・デコード関連をひととおり試してます。 ----------------- use Encode; Encode::from_to($str, "utf8", "shiftjis"); $str = Encode::decode("utf8" ,$str); $str = Encode::encode("utf8" ,$str); ----------------- あとは、Jcodeのgetcode使って、文字化けする文字と、文字化けしない文字の文字コードを確認するとか。 utf8::encode($str); っていう一文を、出力する直前にいれてみるとか。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>出力した文字列のみが文字化けしないでその他の日本語文字列のみが化けます。 使用している文字コードの不整合(例えば、片方はUTF8で片方はEUCというような)ではないかなあ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • utf8フラグを外すと、日本語が化ける

    MySQLにPerlから登録させるプログラムを書いていて文字コードでハマってしまいました。 HTMLからpostされたデータを登録しても、そのまま日本語で保存されるのですが、以前に書き出しておいたデータファイルから読み込んだ文字が文字化けしてしまいます。 もちろんデータファイルはutf8で保存されており、またpostされたデータもutf8です。 そこで、utf8フラグのあたりが怪しいのでは、、と思い調べたところ、 postされた文字列はフラグなしのutf8、データファイルから読み込んだ文字列はフラグ付きのutf8でした。 それならばと、utf8::decode($str);をしてみたのですが、フラグは取れたものの肝心の文字列が文字化けしています。 文字化けした文字は、MySQLに化けて登録されたものと同一の化け方でした。 この状態で、どうすれば化けさせずに登録させられるでしょうか? Perlのバージョンは5.8.8です。 スクリプト自体もutf8です。 もし分かる方がいらっしゃればご教授願えると嬉しいです。

    • ベストアンサー
    • Perl
  • [perl5.8] utf8で文字出力すると文字化けする

    perl5.8で、テキストをunicode(utf8)で出力したのですが、文字化けします。 ソースは以下のとおりです。 -----ソース----- use open OUT => ":encoding(utf8)"; open(OUT, ">utf8.txt"); print OUT "utf8だよ\n"; close(OUT); ----------------- できたファイルはutf8エンコードなのですが、 エディタで見ると「だよ」が文字化けします。 ちなみにフリーソフトで、SJIS形式の「utf8だよ」が 書かれたファイルをutf8に変換すると、文字化けしません。 フリーソフトで生成したutf8ファイルと、 自作perlで生成したutf8ファイルとを バイナリエディタで読込み比較すると 75746638E381A0E382880D0A (フリーソフト) 75746638C282C2BEC282C3A60D0A (自作perl) という差が出ています。 原因がお分かりになる方、知恵をお貸し願えますか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • UTF-8にしても文字化けが直らない

    XAMPPでPHPとMySQLを使っています。 しかし、そのまま使うと文字化けが起きてしまいます。調べると「UTF-8」にすることで文字化けが起こらないとのことなので変更をし、以下のように全てutf-8に書き換えることができました。 mysql> show variables like 'char%' -> ; +--------------------------+----------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:\program\xampp\mysql\share\charsets\ | +--------------------------+----------------------------------------+ しかし、それでも文字化けは直りませんでした。以下のコマンドで原因を確かめてみました。 mysql> use testdb; Database changed mysql> status -------------- Server characterset: utf8 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 Db characterset: latin1が原因だと思い、以下のコマンドを実行しました。 alter database testDB character set utf8; そしてもう一度テーブルを作りなおすと今度は文字化けどころか空白になってしまいました。 なにが原因で文字化け等が起こっているのか分かりません。助けてください。 OSは Windows Vista です。 バージョンは ApacheFriends XAMPP version 1.7.7 + Apache 2.2.21 + MySQL 5.5.16 (Community Server) + PHP 5.3.8 (VC9 X86 32bit thread safe) + PEAR です。 回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • UTF-8で文字化け

    いつもお世話になっております。 全てのファイルをEUC-JP で作成しております。 Googleマップを使用することになり、1ページだけ UTF-8 で出力したいと思います。 php.ini の設定は以下のようになっております。 -------------------------------------------------- default_charset EUC-JP mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.substitute_character no value -------------------------------------------------- Googleマップを出力するページで以下のようにしたのですが 文字化けが直りません。 map.php -------------------------------------------------- ini_set("default_charset", "UTF-8"); mb_internal_encoding("UTF-8"); 他に設定する箇所はありますでしょうか。 よろしくご教示お願いいたします。 <環境> PHP:4.3.1

    • ベストアンサー
    • PHP
  • 急に文字化けを起こすようになりました

    こんにちは。 さて、過去2年間位、特に問題のなかったページで、突如文字化けを起こすようになりました。 ・mysqlバージョン・・・申し訳ないのですが、今(深夜ゆえ)分かりません。 ・mysqlの文字コード・・・EUC ・HPの文字コード・・・UTF-8 サーバー側にデータベースの破損等聞いても、特に問題はないと言われました。 mb_convert_encoding($v,'UTF-8','EUC-JP'); を mb_convert_encoding($v,'UTF-8',"EUC-JP,UTF-8,auto"); にしたり、色々やっても変わりません。 本当に2年間位は、正常だったのです。特に設定もいじってません。 情報が不足しているかとは思いますが、(会社に行けばバージョンなど分かります。) 何が原因なのか、思いつく事があれば、教えてください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Perlの文字コード

    1-2年ほど前、Perl5.8でソース自体をUTF8N(LF)で記述するようになり、 以下のように書いていました。 use utf8; use encoding "utf8"; use Encoding; それからPHPに移り、PHPでは、ソースはEUC-JP、DBもEUC、HTMLに出力する際もEUC-JPで統一していました。 最近またperlを使い出して疑問に思ったのですが、 perlではどのような文字コードで統一すれば一番よいのかということです。 javascriptはUTFだと動作しない端末(ザウルス)などあり、 perlもEUC-JPで統一しようと考えています。 昔、UTF8にこだわったのは、おそらく 「構」という文字は5Cなので、 文字コードによる不具合(ソース,js,cssで)を避けるためと、流行のUTF8にしたと思います。 perlでEUC-JPで文字コード統一させるメリットデメリットが知りたいです。 最近perlで書かれたサイトでHTML出力がShift_JISだったのですが、perlソースもシフトJISかは知りませんが、Shift_JISで統一するデメリットが知りたいです。 あと、WEBでどの文字コードが現在主流で、今後どうなるかも知りたいです。 EUC-JPで安泰なら、話は早いですが・・・

    • ベストアンサー
    • Perl
  • utf-8でメールを送信すると件名が文字化け

    Perlでメールフォームを作成しております。 今後のこともあってUTF-8でファイル、HTMLの出力をおこなっております。 なにかとutf-8便利でさくさくと問題なく作成していたのですがメール送信の肝心な部分で問題が出てきました。 送信先はiモードで506iです。 メールのヘッダーを以下のようにして送ると件名の日本語がどうしても文字化けします。本文はしません。アウトルックエクスプレス6.0では文字化けしません。YahooWebメールは文字化けしました。 Reply-To: $adminmail Errors-To: $adminmail To: $user_mail From: $adminmail Subject: $subject content-transfer-encoding: 7bit Content-type: text/plain; charset=utf-8 ・携帯がutf-8に対応していないメーラーなんだろうと思いますがなぜ本文は文字化けしないんでしょうか。 ・件名を文字化けをしないようにする方法はありますでしょうか?(ファイルの保存形式はutf-8を変えずに)

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

     こんにちは。 1つ教えて頂けないでしょうか。 XAMPP1.8.2をダウンロードしてphpMyAdminを使用し1つテーブルを作成しました。 列のデータ型は4列全てvarchar(255)です。そこにCSVのUTF-8+CRLFで保存したデータを インポートすると日本語の項目列(4列目)が文字化けしてしまいます。また1行目の1列目の 項目に不要な文字化けした文字が付いてしまっています。 php.iniの変更 mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8 mbstring.encoding_translation = On mysql\binのmy.iniの変更 init-connect=\'SET NAMES utf8\' collation_server=utf8_unicode_ci character_set_server=utf8 テーブルの照合順序をutf8_general_ciに変更 以上の変更を行っても文字化けしてしまいます。 まだ他に変更しなければならないところがあるのでしょうか? 分かる方おられましたら、教えて頂けないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • UTF8が16進文字列に化ける(変わる?)

    教えてください。 Nokogiriというgemを使ってXMLを処理しています。 Nokogiriへの入力はUTF8なのですが、 XML処理後の出力が16進文字列に変わってしまうのです。 環境はLinux (Linuxについてはあまり詳しくないので 情報が不十分かもしれません。すいません。) 16進文字列をUTF8に戻すこともできるのですが、 できれば、無駄な手間はかけたくありません。 もし、原因に心当たりがありましたら、 教えていただけると助かります。 Encoding.default_internal、 Encoding.default_externalなども怪しいと思います。