[pgsql-jp: 39303] Re: 'encoding "EUC_JP" has no equivalent in "UTF8"' の理由

Hiroki Kataoka kataoka @ interwiz.jp
2008年 3月 26日 (水) 12:04:24 JST


片岡です。

ITAGAKI Takahiro さんは書きました:
> この問題は、むしろ EUC_JP → UTF8 のマッピングが弱いことが原因かもしれません。
> 例えば、以前この ML にも流れた「はしごたか」などですね。

 まず整理しないといけないことがあります。問題としているEUCは、どのEUC-
JPか、ということです。

・eucJP-ms(PostgreSQLが扱う日本語EUC-JP)
・CP51932(WindowsのIEなどが扱う日本語EUC-JP)

 PostgreSQLで「変換できない」とよくいわれる「はしごたか」は、CP51932で
のFCE2です。CP51932はPostgreSQLが扱うEUC-JPではありませんから、これが変
換できないのは仕方ないことです。そもそも使っているエンコーディング(文字
セット)が間違っていたといえます。

 一方、PostgreSQLが扱うeucJP-msでのFCE2は何の文字になるかというと外字に
なります。またeucJP-msで「はしごたか」を表すなら8FF4FBになります。つまり
CP51932とeucJP-openの双方には互換性がなく、共存もできません。

 ですからこの問題に対して「PostgreSQLにはEUC_JP⇔UTF8の変換ルールが足り
ない」と考えるのは誤りです。強いて言うなら「PostgreSQLにCP51932のエン
コーディングがない」でしょうか。

> 基本的には UTF8 は EUC_JP や SJIS を含む文字セット(スーパーセット)
> だと思っていますが、この認識であっているでしょうか?

 その点では合っていますが、問題は違うところにあるということです。

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



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