
利用サーバ:さくらインターネットのレンタルサーバ
利用データベースのバージョン:MySQL 5.1
PHPのバージョン:PHP 5.2.××
PHPMyAdminに記載のMySQL の文字セット: UTF-8 Unicode (utf8)
PHPMyAdminに記載のMySQL 接続の照合順序: utf8_general_ci
htmlやPHPファイルを、EUC-JPからUTF-8に、全て変えたためなのかは分かりませんが、
データベースに格納されている日本語(というか全角文字?)データを、
PHPで取り出せなくなってしまいました。半角英数字のデータは取得できます。
そのためDBから取得して表示させている文字データのうち、日本語のみが表示されません。
【php.iniファイルの中身】
register_globals = "On"
mbstring.language = "Japanese"
mbstring.internal_encoding = "UTF-8"
mbstring.encoding_translation = "On"
default_charset = "UTF-8"
output_buffering = "Off"
mbstring.http_input = "auto"
mbstring.http_output = "pass"
mbstring.detect_order = "auto"
mbstring.substitute_character = "none"
情報は足りますでしょうか?どなたか、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
php.ini の設定は PHP 単体での 入出力 設定なので、MySQL にはあまり関係ないですね。
mbstring.internal_encoding = "UTF-8" 場合によって絡んでくる位
MySQL のほうは my.ini ですが、レンタルサーバの場合は多分触れないですし、
表示がされないというのは、文字化けを起こしているのか、まったく何も表示されないのかどちらでしょうか。
MySQL 5.1 でしたら、PHP 側で何かするというより、MySQL のプリペアドステートメントの使用をお勧めします。(PHP 側でうまく設定してあげれば、PHP メインでということも可能ですが)
この回答への補足
全く表示されません。
PHP内のSQLでselectした直後にデータが取れてるかvar_dumpで見ても
日本語データだけ取れてませんでした。
その部分のデータを英数字に置き換えると取得できます。
「MySQL のプリペアドステートメントの使用」?ちょっと調べてみます。
引き続きよろしくお願いします。
No.3
- 回答日時:
> さくらのレンタルサーバでMySQLの文字コードを UTF-8に変えるには、どうしたらいいのでしょうか?
さくらに限らず文字コードは手動でも変更可能ですので、クエリ実行前に
mysql_set_charset('utf8'); // (PHP 5.3.2+)
// この関数は、SET NAMES と等価ではないため、古いバージョンでは以下のようにする必要があります。
// PHP 5.3.2 以前の場合
mysql_unbufferd_query('SET NAMES utf8;');
mysql_unbufferd_query('SET character_set_connection = latin1;');
// 又は
mysql_unbufferd_query('SET NAMES utf8');
function mb_mysql_real_escape_string($str, $charset=null) {
is_null($charset) == false && mb_regex_encoding($charset);
return mb_ereg_replace('[\\x00\\n\\r\\\\\'"\\x1A]', '\\\\0', $str);
}
など。
プリペアドの件は、結局 PHP を介さないといけないので、忘れてください。
PDO を利用した場合でも事情は同じです。
色々とありがとうございます。
さくらに問い合わせたら「レンタルサーバではDBはEUC-JPから変更できない」
との回答でしたので諦めて、ちょっと面倒ですが地道に
mb_convert_encordingで文字コード変換(UTF-8⇔EUC-JP)することにしました。
No.2
- 回答日時:
まったく表示されないとなると困りましたね。
システムが正常だとして、どこかで UTF-16 になっていないか調べてみてください。
それから、なるべく単純な処理 (データベースから取ってきて表示するだけ、固定値をテンプレートに渡して表示など)で部分ごとに調べてみてください。
どうも、MySQLの文字コードがEUC-JPになっているようです。
mb_convert_encodingで、
PHPフォームからDBへデータを登録する際は:UTF-8からEUC-JPに変換
DBからデータを取得する際:EUC-JPからUTF-8に変換
したら、日本語データも上手く表示されました。
さくらのレンタルサーバでMySQLの文字コードを
UTF-8に変えるには、どうしたらいいのでしょうか?
照合順序はUTF-8になってるんですけどね・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お助けください。。。
-
mysqldumpでリストアし一部外字...
-
mysql 4.0.24について
-
TYPE=InnoDB
-
MySQLのDBI
-
何がおかしいでしょうか?
-
MySQLのプロセスがCPUを喰って...
-
PHPとMySQLで時間を比較するに...
-
phpでmysql操作
-
like句を使って日本語を検索す...
-
PostgreSQLにはPLPGSQL
-
ユーザの情報を一覧表示
-
mysqlがインストールされている...
-
ロールバックできないステート...
-
複数条件の検索について
-
MySQLカラム名は日本語と英数字...
-
xamppでMySqlが正しく起動しない
-
DB2 INSERT時の格納順序
-
MySQLが起動できない
-
PHP Mysql エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8にしても文字化けが直らない
-
Mysqlの文字化けについて
-
テーブルに日本語が登録できない
-
さくらのレンタルサーバで文字...
-
DB内の日本語データがPHPで取得...
-
データの移行について
-
UTF-8をMySQLに伝達させるには
-
「set names utf8」ですよね?
-
MYSQLで日本語が入力できない
-
日本語をinsert時に文字化け
-
検索で濁点や半濁点をヒットさ...
-
xamppのMySQLの文字化け
-
MySQL 文字化けについて(PHP)
-
mysqldumpでリストアし一部外字...
-
設定が更新されない
-
データベース(mysql)の日本語...
-
mysql>status で
-
xampp の mysql 文字化け
-
MySQL5.1の文字列サイズは文字...
-
MySQL文字化け「表」について
おすすめ情報