Windows2003上で稼働していたMysql5.1を
Windows2008R2上の5.5に移行中です。
試行錯誤のうえ、mysqldumpで日次行っているバックアップデータをレストアするまではなんとかできたようですが、phpのプログラムで日本語を表示すると文字化けが発生してしまいます。
文字コードの設定は旧マシンと同じ状態になっていることは確認しました。
元の設定も少しいびつな状態になっているとは思いますが、Command Line Clientで見ると、正常に日本語は表示されています。
▼my.iniの内容
[mysql]
default-character-set=cp932
[mysqld]
default-character-set=cp932
▼mysqlの環境変数
mysql>show variables like 'chara%'
character_set_client cp932
character_set_connection cp932
character_set_database utf8
character_set_filesystem binary
character_set_results cp932
character_set_server cp932
character_set_system utf8
▼データ文字セット
対象データベースの文字コード:utf8
テーブルのdefault-charaset:cp932
十分に理解していないうえでデータベースを構築しているのでいびつな状態になっている状態ですが、移行後も、phpのソース(文字コードsjis)上に記載してある日本語の表示文字は正確に出ています。
2008になってunicode化された影響なのでしょうが、プログラムの変更をせずに文字化けを解消する方法はあるのでしょうか?
テーブルの文字列を直接変更すればいいのかもしれませんが、
テーブル内のカラムも個別に文字コード設定してあったりして、どう直せばよいのかも判らない状態です。
create table `mytbl` (
`row1` char(20) character set sjis ,
(中略)
) default charaset cp932;
よろしくお願い申し上げます。
No.1
- 回答日時:
phpのプログラムから参照すると文字化けするという意味でよろしいでしょうか?
dbへの接続はmysql_、mysqli_、PDO、ODBCなどなにを経由しておこなっていますか?
また推奨はされないのであくまでもテストで作業するとして
MySQLへ接続後、「set names sjis」を発行した後、プログラムでデータを
参照しても文字化けは続きますか?
コメント有難うございました。
phpからmysqlを参照する部分のみが文字化けします。
接続は、mysql_*というファンクションを使っています。
set names sjis;
は実行してみましたが、結果は同じでした。
当初はsjisで統一しようとしていたのですが、別システム(os400)から持ってくるデータが文字化けしてしまい、cp932に変更した経緯があります。
No.2ベストアンサー
- 回答日時:
コマンドラインのmysqlクライアントで文字化けしないということは
やはりデータの投入は成功しているのでしょうねぇ・・・
拡張sjisのcp932でしたから、「set names cp932」の実行でしたね
mysql_query("set names cp932");
をしてから、それ以降のmysql_query()を実行していますよね?
一度発行すれば同じセッション内では有効なはずです。
ただこの掲示板でもよく注意されているのでおわかりだと思いますが
mysql_系の関数はすでに非推奨状態なので、できるかぎりPDOへ
切り替えていく方が今後のトラブルを最小限に抑えることができると思いますよ
コメント有難うございました。
mysql_query("set names cp932");
をデータベースオープンをしているファンクションに組み込んだところ、以降は従来通り動作しました。
今までの環境では特にこれは実行しておりませんでしたので、データベース構築時に一度指定すればよいと思い込んでいました。
しかし、非推奨ということなので、これを移行するのは直ぐにという訳にはいきませんね。コーディングしたのは、そんなに前でなかったのにそうした情報に気づかなかったことが悔やまれます。
ともあれ、なんとか動かすことができましたので助かりました。
どうも有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sjisを使いたい!
-
文字コード変更
-
接続ができません
-
旧filemakerで和暦(令和など)...
-
mysqlがインストールされている...
-
MySQL エラー Duplicate entry...
-
文字コードMS932(Windows-31J...
-
MySQL 文字化けについて
-
MySQLにリモートホストから接続...
-
xamppでmysqlをインストールし...
-
VBAで変数内に保持された二次配...
-
ローカル以外のMySQLをphpMyAdm...
-
winmysqladmin.exeが見つかりま...
-
max_sp_recursion_depthを設定...
-
mysqlがインストールされている...
-
プライマリーキーの昇順でソー...
-
RPMのmysqlとmysql-serverの違い
-
mysql_close();の必要性について
-
検索で濁点や半濁点をヒットさ...
-
MySQLサーバーに接続でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
like句を使って日本語を検索す...
-
my.cnf と my.ini の違い
-
エクセルで連勤チェックをした...
-
ODBC接続で全角文字が文字化け
-
windows上のphpにおける全角ハ...
-
phpMyadminでのMySQLの文字セット
-
phpMyAdminのデフォルトのLangu...
-
netscreen remoteに関して
-
MYSQLの文字化けについて
-
文字コード変更
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
プライマリーキーの昇順でソー...
-
Float型の時の計算結果がおかしい
おすすめ情報