• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:さくらのレンタルサーバで文字化けが発生します。)

さくらのレンタルサーバで文字化けが発生する理由と対処法

このQ&Aのポイント
  • さくらのレンタルサーバで文字化けが発生する理由とは?確認方法や解決策をご紹介します。
  • さくらのレンタルサーバで文字化けが発生する原因や解決策について詳しく解説します。
  • さくらのレンタルサーバで文字化けが発生した場合の対処方法をまとめました。

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

DBD::MySQL に mysql_enable_utf8 という属性があります。 これをセットすると、mysql から取り出したデータは自動的に UTF8 フラグ つきになります。 This option is experimental and may change in future versions となっていますが、使えませんか。

参考URL:
http://search.cpan.org/~capttofu/DBD-mysql-4.016/lib/DBD/mysql.pm
osama_vin_ladin
質問者

補足

スクリプトt側では use utf8;をしていませんので utf8フラグは立っていません。 my$dbh = DBI->connect(*******);の後に $dbh->do("SET CHARACTER SET utf8"); を記述して問題は解決するのですが、 my$dbh = DBI->connect(*****,*****,on_connect_do=>"SET CHARACTER SET utf8");だとやはり文字化けします。 on_connect_do属性が効いていない感じがします。 on_connect_do属性が利用できれば、スクリプトもすっきりするので利用したいのですが、 この属性が効かない原因は何が考えられますでしょうか?

その他の回答 (1)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

perl スクリプトが示されてないのでなんとも言えませんが、 たぶん perl の UTF8 フラグ付き文字とフラグなし文字が 混在しているのだと思います。

osama_vin_ladin
質問者

補足

回答ありがとうございます。 UTF8 フラグ付き文字については、 DBに値を挿入するときにそのような警告が発せられず、かつ文字化けした文字が挿入されてしまうので、別に原因があると思います。 昨夜、スクリプト内に $dbh->do("SET CHARACTER SET utf8"); を書いたところ、文字化けは無くなりましたが、全てのスクリプトにいちいち書くのはあまりクールではないので、もっとスマートな方法がありましたら教えていただきたいと思います。 宜しくお願いいたします。

関連するQ&A