
さくらのレンタルサーバで文字化けが発生します。
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ランキング
-
cseデータ閲覧時の文字化け
-
MYSQLで日本語が入力できない
-
cseデータ閲覧時に文字化け
-
なにが原因???
-
ODP.NETのバージョン確認
-
like句を使って日本語を検索す...
-
副問合せにLIKE文を使う方法は...
-
Excel VBA SelectedItems
-
パスワード入力を省略したい
-
MySQLカラム名は日本語と英数字...
-
列数が多いと結果が行単位に改...
-
mysqlがインストールされている...
-
mysqldが実行できない
-
経過時間(hhmmdd)をDATE型には...
-
mySQLで複雑な演算
-
テーブル作成でエラーが出てき...
-
MySQLにリモートホストから接続...
-
シングルクォーテーションとダ...
-
SQL開発環境ソフトウェアである...
-
SQLのVARCHARとVARCHAR2の違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8にしても文字化けが直らない
-
Mysqlの文字化けについて
-
テーブルに日本語が登録できない
-
さくらのレンタルサーバで文字...
-
DB内の日本語データがPHPで取得...
-
データの移行について
-
UTF-8をMySQLに伝達させるには
-
MySQL 文字化けについて(PHP)
-
検索で濁点や半濁点をヒットさ...
-
MYSQLで日本語が入力できない
-
xamppのMySQLの文字化け
-
「set names utf8」ですよね?
-
日本語をinsert時に文字化け
-
mysql>status で
-
設定が更新されない
-
xampp の mysql 文字化け
-
mysqldumpでリストアし一部外字...
-
MySQL5.1の文字列サイズは文字...
-
データベース(mysql)の日本語...
-
MySQL文字化け「表」について
おすすめ情報