さくらのレンタルサーバで文字化けが発生します。
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ランキング
-
php・Mysql Like文で日本語が使...
-
MySQL 文字化けについて(PHP)
-
MySQL(UTF-8)で ~ が文字化け...
-
テーブルに日本語が登録できない
-
php $dsn
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
ORACLE8iとAccess97
-
mysqlへのインポート処理がうま...
-
二進数を勉強しているのですが...
-
cseデータ閲覧時に文字化け
-
列数が多いと結果が行単位に改...
-
VBAで変数内に保持された二次配...
-
psqlでいう Ctrl+C
-
Column '' not found.
-
my.iniで設定するパスワードの...
-
クラスファイルでエラーが出て...
-
Mysql移行後の文字化け
-
SQLのVARCHARとVARCHAR2の違い
-
MySQL 文字化けについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MYSQLで日本語が入力できない
-
さくらのレンタルサーバで文字...
-
mysqldumpでリストアし一部外字...
-
検索で濁点や半濁点をヒットさ...
-
php・Mysql Like文で日本語が使...
-
MYSQL再起動後に接続できなくな...
-
php $dsn
-
UTF-8にしても文字化けが直らない
-
日本語をinsert時に文字化け
-
cseデータ閲覧時の文字化け
-
MYSQL 4.1 の余計なエスケープ処理
-
MySQLの文字コード変換
-
レンタルサーバーでphpmyadmin...
-
CSVをMYSQLにインポートすると...
-
MySQL(UTF-8)で ~ が文字化け...
-
Mysqlの文字化けについて
-
MySQL5.1の文字列サイズは文字...
-
設定が間違っていないのに文字...
-
インポートできない。
-
接続ができません
おすすめ情報