[pgsql-jp: 38070] Re: データ移行時の文字コードエラーについて

YuGo yu.gotou @ gtec-ni.com
2007年 2月 21日 (水) 16:36:51 JST


ISHIDA Akio どの
> こんにちは。石田@苫小牧市です。
> 
> 07/02/21 に YuGo<yu.gotou @ gtec-ni.com> さんは書きました:
>>  中井 どの
>>
>> > YuGo wrote:
>> >> バックアップしても、完全にリストアできないということですか。
>> >> 2バイト文字の扱いについて、細かいところまでPostgreSQLに頼ってはいけ 
>> ない
>> >> のかなと思いました。
>> >
>> > それは間違っています。基本的にeuc-jpとutf-8の間で完全に1対1の
>> > 対応が仕様上できていないことに問題があります。
>>
>> 何が間違っているのか、さっぱりわかりません。
>> PostgreSQLサーバでEUC-JPとUTF-8間の変換ができないとしたら、自分で変換し
>> て投入しなければいけないということでしょう。
>>
> 
> そもそも今回の件と、euc-jpとutf-8間の文字コード変換とは
> 何も関係無いんじゃないでしょうか。
> 
> わかっていることは、0xa0caという謎のバイトシーケンスが
> 何かのきっかけで移行前のDBに混在してしまったということだけです。

当方はPostgreSQL8.1.8にPHP4でアクセスしていますが、この例のようにEUC-JP
のテーブルにinvalid byte sequenceをどうやってもぐりこませることができる
のか、どうも方法がわかりません。バイト列0xa0caをvarchar型としてINSERTす
る方法はありますか?このケースを再現する方法を知りたいです。
わたしの場合はUTF-8しか使いませんが、データベースのチェックをすり抜ける
のならPHPのmb_check_encoding関数を使ってあらかじめ制限しなければいけない
のかなと考えています。













pgsql-jp メーリングリストの案内