※ ChatGPTを利用し、要約された質問です(原文:PHP+MySQLでSJISからEUCへの文字コード変換方法を教えてください。)
PHP+MySQLでSJISからEUCへの文字コード変換方法
このQ&Aのポイント
PHP+MySQLでSJISからEUCへの文字コード変換方法について教えてください。
現在、PHP+MySQLでサイトをSJISコードで運営していますが、SJISの文字化け対策が面倒になってきました。
SJISからEUCに変換する場合の手順として、PHPファイル、php.ini、MySQLの設定ファイル、テーブル内のデータを変換する必要があります。
PHP+MySQLでSJISからEUCへの文字コード変換方法を教えてください。
こんにちは。いつもお世話になっております。本来であれば自サーバーで検証してから質問すべきだとは思いますが、現在稼動中のサーバーしかなく、止めることができないので質問させていただきます。
現在、PHP+MySQLでサイトをSJISコードで運営しておりますが、「表」「能」等のSJISの文字化け対策が面倒になってきまして、EUCに変換してしまおうかと検討しております。
現状の日本語に関する設定は下記のようになっております。
▼MySQL(my.cnf) バージョン:4.1.20
[mysqld]
default-character-set=sjis
init_connect="SET NAMES sjis"
[mysql.server]
default-character-set=sjis
[mysqldump]
default-character-set=sjis
[mysql]
default-character-set=sjis
▼PHP(php.ini) バージョン:4.3.9
mbstring.internal_encoding = SJIS
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
PHP内でMySQLと接続した直後に次のようにSJISを指定しています。
$sql="SET NAMES sjis";
mysql_query($sql);
ちなみに、MySQLはMySQLadminで管理しておりますが、テーブルの照合順序は全てsjis_japanese_ciになっています。
上記のような内容ですが、この場合SJISからEUCに変換する場合の手順として、下記の流れでよろしいでしょうか?
1.PHPファイルをEUCコードに変換。
2.php.iniのSJISの部分をEUCに変換。
3.MySQLの設定ファイルのsjisの部分をujisに変換。
4.MySQLのテーブル内のデータを全てエクスポートして、外部エディタでEUCに変換後インポートする。
特に上記4の作業はテーブル数及びデータが膨大なため結構な作業になってしまいそうです。
もしもっと楽な方法があればご教授いただければ幸いです。なお、サーバーはRed Hat Enterprise Linuxです。
お礼
アドバイスどうもありがとうございます。 とても参考になりました。そうですね。手作業で行なうよりプログラムを作って自動でテーブルの処理をすれば楽ですね。 焦らずにミスが無いようじっくりと対処していきたいと思います。