忍者ブログ
[262] [261] [260] [259] [258] [257] [256] [255] [254] [253] [252
カレンダー
09 2024/10 11
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
カテゴリー
最新コメント
最新トラックバック
バーコード
ブログ内検索
アクセス解析
データベースのデータを取り出しているページを確認しましたが、まだ文字化けが発生していました。
SHOW VARIABLES LIKE 'char%';で
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_set_dir
にすれば文字化けは解消します。
私はインターネットで調べてcharacter_set_databaseをutf8にするにはデータベースを作成する時にCREATE DATABASE データベース名 DEFAULT CHARACTER SET utf8;にすればいいのですが、データベースはすでに作成してあるので一旦DROP DATABASE データベース名;でデータベースを削除して再びデータベースを作成してcharacter_set_databaseをutf8にしました。
そのほかのVariable_nameをutf8にするにはmy.iniの
[client]

default-character-set=utf8(52行目)
[mysql]

default-character-set=utf8(58行目)

[mysqld]
default-character-set=utf8(82行目)
skip-character-set-client-handshake(83行目)
に変更すればしたらクライアントの文字化けは解消しましたが、サーバーの方のcharacter_set_serverの値をutf8に変更するにはmy.iniを
[mysqld]
default-character-set=utf8(82行目)
skip-character-set-client-handshake(83行目)
に変更すれば文字化けは解消出来るのですが、(そのほかのVariable_nameはすでにutf8になっていました)レンタルサーバーではmy.iniを変更、すなわちcharacter_set_serverの値を変更出来るのかをレンタルサーバーのサポートセンターに電話をしたらレンタルサーバーのサポートセンターの方は技術者の方に聞いてみるので折り返し電話をしますとおっしゃり、しばらくしてレンタルサーバーのサポートセンターの方から電話があり、契約しているコースではcharacter_set_serverの値は変更出来ないとおっしゃりました。
私はレンタルサーバーのサポートセンターの方にphpMyAdminからは文字化けは発生しないが、ブラウザからデータベースのデータを確認したら文字化けが発生すると言いました。
レンタルサーバーのサポートセンターの方が田舎暮らしのサイトのURLを教えるようにおっしゃり、私はレンタルサーバーのサポートセンターの方に田舎暮らしのサイトのURLを教え、レンタルサーバーのサポートセンターの方はブラウザからデータベースのデータの文字化けを確認されました。
レンタルサーバーのサポートセンターの方は調べて折り返し電話するとおっしゃりました。
お昼休みになり、私が社長と一緒に食事をしていると会社には誰もいなかったので会社に掛かって来る電話は社長のPHSに転送されるのでレンタルサーバーのサポートセンターの方から社長のPHSに電話が掛かって来ました。
私が電話を替わり、レンタルサーバーのサポートセンターの方はセットされた文字コードと呼び出された文字コードが異なると文字化けが発生するとおっしゃりました。
私は会社に戻ると、インターネットで文字化けの解決方法を調べました。
インターネットで文字化けの解決方法を調べてみると、DBの内部文字コードと取り出したデータを表示文字エンコードがあっていないために起こっていると思われます。
表示するページの文字コードにエンコードしてみてください。

print mb_convert_encoding($item['data1'] , '表示エンコード', 'DBエンコード')."
";
と書かれてあったので'表示エンコード'をUTF-8、'DBエンコード'をlatin1にしましたが、文字化けは解決出来ませんでした。
私はmb_convert_encoding()関数がどのような役割を持っているのか調べてみると文字エンコーディングを変換すると書かれてありました。
私はホームページに書かれてある文字コードがUTF-8ではなく、'DBエンコード'もlatin1ではないので文字化けが解決出来ないと思い、ホームページに書かれてある文字コードとDBの文字コードを調べる関数をインターネットで調べてみると文字コードを検出するには関数mb_detect_encodingを利用します。
と書かれてあったので私はprint mb_convert_encoding($item['data1'] , mb_detect_encoding(ホームページの文字列), mb_detect_encoding(DBの文字列))."
";
を試しましたが、文字化けは解決出来ませんでした。
私は試しに関数mb_detect_encodingを使って、クライアントとサーバーのホームページの文字コードを表示せてみて、表示されたホームページの文字コードで関数mb_convert_encodingを使いましたが、サーバーどころかクライアントのホームページまで文字化けしてしまいました。
仕方が無いのでほかの方法をインターネットで調べてみましたが、大体my.ini(my.cnf)を修正したら直ったというものでしたが、my.ini(my.cnf)を修正しなくても文字化けが直る方法もありましたが、少しややこしそうでした。
私はほかに方法が無いのかとインターネットで調べてみるとDB接続後に、「set names UTF8」を入れてみると書かれてあったので試しにmysql_connect(サーバー名, ユーザ名, パスワード)の後にmysql_query("set names utf8");を入れたらphpMyAdminでもホームページからも文字化けが直っていました。(クライアントとサーバー両方)
私はset names UTF8がどのような役割を持っているのかをインターネットで調べてみると既存のデータベースの文字コードを変更すると書かれていました。

phpMyAdmin、PHPでブラウザで文字化けします
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1011050700

文字コードの変換
http://php-web.net/program/mb.html

サーバの文字コードが変更できない場合のMySQL文字化け対応
http://www.ferix.jp/blog/hi/?p=619

PHP+Mysql文字化け
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1016008590

MySQLの文字コードをUTF8に設定したい
http://it.kndb.jp/entry/show/id/15
PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
この記事へのトラックバック
この記事にトラックバックする:
Powered by Ninja Blog    template by Temp* factory    icon by MiniaureType

忍者ブログ [PR]