[pgsql-jp: 40210] Re: UTF-8 <- SJISの文字化け

Hitoshi Harada umi.tanuki @ gmail.com
2010年 3月 12日 (金) 17:42:22 JST


原田です。

2010年3月12日17:31 小笠 剛 <ogasa @ oct.email.ne.jp>:
> 漢字データ登録時に文字化けしたりします。
>
> CentOS 5.4
>
> PostgreSQL 8.3.6
> server encoding : utf-8
> client encoding : sjis
>
> unixODBC 2.2.11-7.1
>
> です。
> ●たとえば"宮"、"本"などは登録できません。
>
> エラーの例(Apacheのerrlog)
> ERROR:  invalid byte sequence for encoding "SJIS": 0x9627 (SQL-01000) [state
> was 01000 now
>  S1000]
> ERROR:  invalid byte sequence for encoding "SJIS": 0x9627 (SQL-S1000) at
> /var/www/cgi-bin/
> mainte_article_detail.cgi line 451, <CONFIG> line 12.

エラーメッセージの通り、0x9627というSJISのコードはないと思われます。
"本"のコードが0x967bです。

> このエラーで出てくる0x..27という0x27( "'" : シングル九オート)のコードが邪魔
> しているのでしょうか。

エラーメッセージを見る限りCGIからのSQLだと思いますが、perlでバイト文字列を扱っていれば、確かにSJISの2バイト目が落ちてその後ろのシングルクォートとくっついて0x9627、ということがあるかもしれません。

クライアント側の処理で上記の状態がないかどうか確かめたほうがよいかもしれませんね。



-- 
Hitoshi Harada


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