MySQLにおける機種依存文字の扱い [Linux]
MySQL絡みで数時間格闘していた。
レッドクリフ Part2という映画の2は正式にはローマ数字のⅡを使っている。
このブログではきちんと表示されるが、
これはShift-JISでは機種依存文字となっている。
この映画タイトルをDBに登録する際に、
どうしても文字バケが起こってしまい解決方法について悩んでいた、
MySQLではデフォルトの文字コードにはutf8を使用。
元データがShift-JISのCSVファイルなので、
自作プログラムでDBに登録しているのだが、
文字コード変換時に?に置換されてしまう。
事前にutf8に変換したテキストファイルを、
登録してもなぜか文字バケしてしまう。
かくなる上は、
MySQLのテーブル定義時の文字コードをcp932に設定してみた、
再度、ShiftJISのファイルをDB登録すると、
見事Ⅱは表示された、
他の部分も⑩などが表示されている、
これで、完成!と思ったけど、
機種依存文字なのでMacやLinuxからは表示できないだろうな。
機種依存文字は事前に普通の文字に置換しなきゃダメ、
ということだよな、
いろいろ悩んだけど、
ちょっと無駄な時間をすごしちまった。
でも、Shift-JISからutf8に変換するときに、
うまく変換できれば、
やっぱり一番いいわけで…
まだまだ悩みはつきないみたいだ。
結局、utf8だと思っていたら、テーブルはujis で出来ていた、
なのでテーブル定義を utf8_bin に設定した上で、
DB登録時に、
SET NAMES cp932
を設定してあげれば文字バケは見事に解消!
Linuxからの表示確認では大丈夫だったので、
Macでも大丈夫だろう…多分
レッドクリフ Part2という映画の2は正式にはローマ数字のⅡを使っている。
このブログではきちんと表示されるが、
これはShift-JISでは機種依存文字となっている。
この映画タイトルをDBに登録する際に、
どうしても文字バケが起こってしまい解決方法について悩んでいた、
MySQLではデフォルトの文字コードにはutf8を使用。
元データがShift-JISのCSVファイルなので、
自作プログラムでDBに登録しているのだが、
文字コード変換時に?に置換されてしまう。
事前にutf8に変換したテキストファイルを、
登録してもなぜか文字バケしてしまう。
かくなる上は、
MySQLのテーブル定義時の文字コードをcp932に設定してみた、
再度、ShiftJISのファイルをDB登録すると、
見事Ⅱは表示された、
他の部分も⑩などが表示されている、
これで、完成!と思ったけど、
機種依存文字なのでMacやLinuxからは表示できないだろうな。
機種依存文字は事前に普通の文字に置換しなきゃダメ、
ということだよな、
いろいろ悩んだけど、
ちょっと無駄な時間をすごしちまった。
でも、Shift-JISからutf8に変換するときに、
うまく変換できれば、
やっぱり一番いいわけで…
まだまだ悩みはつきないみたいだ。
結局、utf8だと思っていたら、テーブルはujis で出来ていた、
なのでテーブル定義を utf8_bin に設定した上で、
DB登録時に、
SET NAMES cp932
を設定してあげれば文字バケは見事に解消!
Linuxからの表示確認では大丈夫だったので、
Macでも大丈夫だろう…多分
2009-04-16 14:48
nice!(0)
コメント(0)
トラックバック(0)
コメント 0