![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
レンタルサーバーでMYSQLとPHPを使用したいのですが、PHPからINSERTした文字が、phpmyadminの画面だけで文字化けしてしまいます。
MySQLの文字コード設定は UTF-8 Unicode (utf8) で、照会順序も utf8_unicode_ci です。
INSERTする文字もINSERT直前に文字コードを変更し、確認したところutf8になっています。
コードは以下のとおり。
<?php
$sql = mb_convert_encoding("$info","UTF-8");
$mojicode = mb_detect_encoding($info,mb_list_encodings());
print "$info の文字コードは $mojicode です。";
?>
PHPでMySQLからデータをSELECTで表示させた際は、文字化けせずに表示されます。
表示させるサイトの文字コードはutf-8です。
表示させる前に文字コードを変換させています。
スクリプトは以下のとおり。
<?php
//文字コード
$enc_disp = "utf-8";
$enc_db = "utf-8";
//データの文字コードを変換する関数
function cnv_enc($string, $to, $from) {
//文字コードを変換する
$det_enc = mb_detect_encoding($string, $from . "," . $to);
if ($det_enc and $det_enc != $to) {
return mb_convert_encoding($string, $to, $det_enc);
}
else {
return $string;
}
}
//データベースに接続
$conn=mysql_connect($sv, $user, $pass) or die("接続エラー");
mysql_select_db($dbname) or die ("接続エラー");
//データを取り出す
//取りだすレコードの開始位置
$st=0;
//取りだす最大レコード数
$lim=5;
$sql = "SELECT number,date,info FROM info ORDER BY date DESC LIMIT $st,$lim;";
$res = mysql_query($sql, $conn) or die ("データ抽出エラー");
//mysql_query()関数でデータを取り出すSQLを実行する
//取り出したデータを表示する
echo "<table border=\"0\" id=table>";
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
echo"<tr>";
echo"<td colspan='2'>".' ・ '.$row["date"].' / '.cnv_enc($row["info"], $enc_disp, $enc_db)."</td>";
echo"</tr>";
}
echo "</table>";
?>
なお、表示する際、文字コードを変更する前にデータの文字コードを調べたところ、ASCIIとなっていました。
phpmyadminに入った際にASCIIになったのでしょうか?
解決策がわからず困っています。
どなたか解決策を教えていただけないでしょうか。
よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
まったく同じ症状なのかはわかりませんが・・・
わたしも、WindowsXP上に開発環境を作った当初、DBに格納された日本語を phpMyAdmin 上で表示させようとしたときだけ、文字化けしてしまう症状に悩まされていました。
当方の環境は、MySQL 5.0.24、PHP 5.2.2、phpMyAdmin 3.0.0です。
ネットでは同類の症例がいくつもみつかり、対策とされる設定を片っ端から試しても解決しなかったのですが、ある日突然きちんと表示されるようになりました。
たぶん、「正しい」設定がなされたまま、Windows(IIS)やMySQLが再起動されたことがよかったのかな?なんて想像していますが。
関係しそうな設定箇所は、以下のようになっています。外していたらすみませんが、いかがでしょうか?
■C:\Program Files\MySQL\MySQL Server 5.0\my.ini
[mysqldump]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysql]
default-character-set=utf8
■C:\WINDOWS\php.ini
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
■phpMyAdmin\libraries\config.default.php
$cfg['DefaultLang'] = 'utf-8';
$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
$cfg['DefaultCharset'] = 'utf-8';
この回答への補足
ご回答ありがとうございます。
ローカルのときはMySQLの設定をいじって解決したのですが、今回はレンタルサーバーなので、MySQLの設定を変更することができずなかなか大変ですね。
php.iniとconfigdefault.phpも試してみましたが改善しませんでした。
他に原因があるようです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php・Mysql Like文で日本語が使...
-
設定が間違っていないのに文字...
-
mysql>status で
-
MySQL(UTF-8)で ~ が文字化け...
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
SQLのVARCHARとVARCHAR2の違い
-
cseデータ閲覧時に文字化け
-
mysqlへのインポート処理がうま...
-
like句を使って日本語を検索す...
-
二進数を勉強しているのですが...
-
列数が多いと結果が行単位に改...
-
副問合せにLIKE文を使う方法は...
-
AccessからOrcleのODBCリンクテ...
-
ERROR 1045 (28000) (using pas...
-
Usage: \\.<filename> | sourc...
-
VBAで変数内に保持された二次配...
-
テーブル作成でエラーが出てき...
-
MySQLに外部PCから接続できない
-
Column '' not found.
マンスリーランキングこのカテゴリの人気マンスリー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の文字列サイズは文字...
-
設定が間違っていないのに文字...
-
インポートできない。
-
接続ができません
おすすめ情報