- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:さくらのレンタルサーバで文字化けが発生します。)
さくらのレンタルサーバで文字化けが発生する理由と対処法
このQ&Aのポイント
- さくらのレンタルサーバで文字化けが発生する理由とは?確認方法や解決策をご紹介します。
- さくらのレンタルサーバで文字化けが発生する原因や解決策について詳しく解説します。
- さくらのレンタルサーバで文字化けが発生した場合の対処方法をまとめました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DBD::MySQL に mysql_enable_utf8 という属性があります。 これをセットすると、mysql から取り出したデータは自動的に UTF8 フラグ つきになります。 This option is experimental and may change in future versions となっていますが、使えませんか。
その他の回答 (1)
- t-okura
- ベストアンサー率75% (253/335)
回答No.1
perl スクリプトが示されてないのでなんとも言えませんが、 たぶん perl の UTF8 フラグ付き文字とフラグなし文字が 混在しているのだと思います。
質問者
補足
回答ありがとうございます。 UTF8 フラグ付き文字については、 DBに値を挿入するときにそのような警告が発せられず、かつ文字化けした文字が挿入されてしまうので、別に原因があると思います。 昨夜、スクリプト内に $dbh->do("SET CHARACTER SET utf8"); を書いたところ、文字化けは無くなりましたが、全てのスクリプトにいちいち書くのはあまりクールではないので、もっとスマートな方法がありましたら教えていただきたいと思います。 宜しくお願いいたします。
補足
スクリプト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属性が利用できれば、スクリプトもすっきりするので利用したいのですが、 この属性が効かない原因は何が考えられますでしょうか?