So-net無料ブログ作成

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でも大丈夫だろう…多分

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。