![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
さくらのレンタルサーバで文字化けが発生します。
Mysqlの仕様は以下の通りです。
* サーバ: mysql110.db.sakura.ne.jp via TCP/IP
* サーバのバージョン: 5.1.42
* プロトコルバージョン: 10
* ユーザ:
* MySQL の文字セット: UTF-8 Unicode (utf8)
perlスクリプトをUTF-8に変換してアップロードしています。
perlスクリプトからヒアドキュメントで出力されるコードはおよそ以下の通りです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="ROBOTS" content="INDEX,NOFOLLOW" />
<title>タイトル部分(文字化けしません)</title>
</head>
<body>
<h1>ここは文字化けしません</h1>
<p>ここが文字化けします</p>
</body>
</html>
ここでtitleタグ、h1タグは正常に表示されます。
そして、Pタグの文字がデータベースから引っ張ってきた文字なんですが、この文字はUTF8で記録されたものですが、ここが文字化けします。
PHPMyadminからSHOW VARIABLESを実行して、文字コードが関連されていると思われる結果部分は以下の通りです。
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server ujis
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server ujis_japanese_ci
以上の事から文字化けを直す方法をご教授いただければと存じます。
宜しくお願いいたします。
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 …
この回答への補足
スクリプト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属性が利用できれば、スクリプトもすっきりするので利用したいのですが、
この属性が効かない原因は何が考えられますでしょうか?
No.1
- 回答日時:
perl スクリプトが示されてないのでなんとも言えませんが、
たぶん perl の UTF8 フラグ付き文字とフラグなし文字が
混在しているのだと思います。
この回答への補足
回答ありがとうございます。
UTF8 フラグ付き文字については、
DBに値を挿入するときにそのような警告が発せられず、かつ文字化けした文字が挿入されてしまうので、別に原因があると思います。
昨夜、スクリプト内に $dbh->do("SET CHARACTER SET utf8");
を書いたところ、文字化けは無くなりましたが、全てのスクリプトにいちいち書くのはあまりクールではないので、もっとスマートな方法がありましたら教えていただきたいと思います。
宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DB内の日本語データがPHPで取得...
-
mysqlの文字化けがどうしても治...
-
さくらのレンタルサーバで文字...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
VBAで変数内に保持された二次配...
-
ERROR 1045 (28000) (using pas...
-
参考書に従って入力したつもり...
-
mysqlコマンドでSQL文が実行で...
-
RPMのmysqlとmysql-serverの違い
-
パスワード入力を省略したい
-
【MySQL+php】 MySQL が認識さ...
-
MAX()でENUMの内部番号が最大の...
-
MySQL エラー Duplicate entry...
-
データベースの選択エラー
-
MySQL のログ出力方法について ...
-
mysqlがインストールされている...
-
2023年10月25日現在のMAMP ...
-
ODP.NETのバージョン確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php・Mysql Like文で日本語が使...
-
MYSQLで日本語が入力できない
-
MySQL 文字化けについて(PHP)
-
UTF-8にしても文字化けが直らない
-
MYSQLでタイ語
-
MAMP MySQl でコマンドプロンプ...
-
DB内の日本語データがPHPで取得...
-
mysqldumpでリストアし一部外字...
-
さくらのレンタルサーバで文字...
-
mysql>status で
-
xamppのMySQLの文字化け
-
「set names utf8;」という構文...
-
MySQL5.1の文字列サイズは文字...
-
MySQL(UTF-8)で ~ が文字化け...
-
設定が間違っていないのに文字...
-
phpmyadminで編集すると文字化...
-
xampp の mysql 文字化け
-
あと、MySQLの文字コードはutf8...
-
テーブルに日本語が登録できない
-
日本語をinsert時に文字化け
おすすめ情報