2009/09/25

AccessをMySQLへインポートするとにょろが化ける

このエントリーをはてなブックマークに追加
MySQLの「MySQL Migration Toolkit」を使用して、AccessからMySQLにDBを移行してみると、どうにもにょろが?になってしまうので、調べていました。

結論としては原因は謎のままです。解りませんでした。
「MySQL Migration Toolkit」自体が日本語に弱いんじゃねーの、と懸念しています。

●にょろについて
にょろとは、いわゆる「〜」です。
文字コード的には、何故か、波ダッシュ「〜」と全角チルダ「~」の二種類あるようで、それぞれ文字コードが異なっています。ややこしいので、「波ダッシュ」と「全角チルダ」を区別して、総称する場合は「にょろ」と呼びます。

Windowsは、「にょろ」で変換すると全角チルダ「~」になる。普段使うのも全角チルダ。
MacOSXではキーボードで全角入力すると波ダッシュ「〜」になる。二種類の字形がまったく同じように見えるのも困りものです。
そしてMacOS9はWindowsと同じで、全角チルダが使用されるようです。


なんか変だなとは、思っていたものの、こんなことになっていたとは知りませんでした。
何が困るって、WindowsとMacOSXとMacOS9の混在環境だったら、にょろの含む文字列が真っ当に検索できませんね。

●文字コードについて
この手のテーマで検索すると、どうにもMT4の記事が多い。
文字コードが絡んでいるようで、MySQLの対応するDBの文字コードをutf8に設定することが求められる模様。しかし、すでに、初っ端から、utf8に設定してあったりします。sjisを試してみたけれど変わらず。

●原因/検証
作成したテーブルに、波ダッシュが拒絶されて?になっているのかと思いきや、そうではなかった。
  • 新しく作成されたMySQLのフィールドに、波ダッシュ「〜」を入力するとエラーにならず、?にもならない。
  • ?で検索するとヒットするので、?はツールの表示上の文字が化けているのではなくて、そのまま?という文字が格納されている。
  • 「MySQL Migration Toolkit」のInsert.sqlを出力してみると、この段階ですでに?に置き換わっていた


ということは「MySQL Migration Toolkit」がInsert.sql発行時に、波ダッシュ「〜」を?に置換してる、と推測してしまうわけです。「MySQL Migration Toolkit」がツール上で、回避できる問題かどうかは解らないまま。

●回避策(?)
AccessからODBC経由でMySQLのテーブルを呼び出して、テーブルを丸ごとペーストすれば「にょろ」も問題ないみたいです。
こんな乱暴な方法しかないってことはもちろんないと思うのだけどなー。

ODBC経由でMySQLのテーブルを呼び出す方法は、データベースを作成してから、「ファイル」→「開く」で、ファイルの種類を一番下にある「ODBC database」を選択してあげるとよいです。※Access2000です。

0 件のコメント :

コメントを投稿