osCommerceからZen CartのUTF8版へデータを移行したが、全角文字とカンマ記号のところで文字化けが多数発生した。
手元の開発環境でデータをZen Cart用にコンバートする。このときまではまったく問題ない。
しかし、そのデータをお客様のサーバにアップすると、文字化けした。
文字列の長さが違うためデータが途中で切れてしまっているように見えた。
UTF8の文字列は、EUCと比べると文字列の長さが長くなるためだと考え、strlen関数で、EUCとUTF8で同じ全角文字の文字数を確認したところUTF8では長くなることを確認できた。
EUCでは、全角文字は2バイトだけど、UTF8では3バイトになることがあるそうだ。
そこで、各カラムの長さを2倍にしてコンバートした文字列が切れないで保存されるようにしてデータを登録すると、
文字化けなく保存できた。
このとき利用していたMySQL4がUTF8に対応していなかったのが原因だと後でわかった。