mysqlで文字化け
カテゴリー:Apache
UTF8のテキストをMysql(4.1.12 )に登録するときに
set names utf8
PHP(4.3.9)上で、データを挿入するSQLの前に上のSQLを実行すると、mysqlで文字化けが発生した。
(PHP上ではなくターミナル上から実行しても同じ結果になると思われます)
データベース自体の文字コードをshow create databasde,show create tableで確認してみるとlatin1が指定されていた。
(latin1でデータベースが作られていたのはMysql をversion4.1.12にアップデートする以前の古いversionの時にデータベースを作成し、そのversionのデフォルトではデータベース作成の際にlatin1が自動指定されるようになっていたためです。)
そこでデータベースを文字コードutf8で再作成すると問題は解決した。
また"set names utf8"の1行を消しても文字化けは起こらなかった。
まとめ
挿入するデータがUTF8で
- データベースがlatin1の時 > "set names"は不要
- データベースがutf8の時 > "set names utf8"
とすると文字化けは起こらない。
関連記事
- 炊飯器で漢方薬を煎じる--技術文明 -New world by nurd- 2007-04-01 13:11:59
- mubon-blogのアップデート 3/20--ノリブログ? 2007-03-20 17:10:46
- MS-IEでODSファイルにアクセスするとIPで保存される--ノリブログ? 2007-03-17 16:50:46
- WindowsXPが起動しない STOP:0x00000035 NO_MORE_IRP_STACK_LOCATIONS--技術文明 -New world by nurd- 2007-03-13 14:46:12
- アクセス解析ツール比較まとめ2--Nyu! 2007-03-11 18:18:41