
さくらのレンタルサーバで文字化けが発生します。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルに日本語が登録できない
-
大量のカラムが検索対象の場合...
-
さくらのレンタルサーバで文字...
-
サーバー移動でMysqlのDBがEUC...
-
php・Mysql Like文で日本語が使...
-
mysqlの文字化けについて
-
mysqldumpでリストアし一部外字...
-
データの移行について
-
MySQL5の文字化けについて(Linux)
-
MySQL5.1の文字列サイズは文字...
-
データベース(mysql)の日本語...
-
副問合せにLIKE文を使う方法は...
-
日本語のデータがインポートで...
-
ODP.NETのバージョン確認
-
VBAで変数内に保持された二次配...
-
MYSQLでストアド
-
postgreSQLのデータ型
-
MySQL起動方法について
-
管理画面に入るときに出るエラ...
-
複数行のクエリを、まとめて実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MYSQLで日本語が入力できない
-
日本語をinsert時に文字化け
-
UTF-8にしても文字化けが直らない
-
検索で濁点や半濁点をヒットさ...
-
MYSQLでタイ語
-
DB内の日本語データがPHPで取得...
-
MySQL 文字化けについて(PHP)
-
文字化けが発生する
-
mysqldumpでリストアし一部外字...
-
php・Mysql Like文で日本語が使...
-
cseデータ閲覧時の文字化け
-
設定が更新されない
-
PHPとmysqlでの文字化けについて
-
php $dsn
-
大量のカラムが検索対象の場合...
-
ACCESSとphpmyadminの文字関係...
-
mysql>status で
-
MySQLの文字コード変換
-
PHP,MySQLで日本語のデータの表...
-
my.ini 内を変更しても文字化...
おすすめ情報