[pgsql-jp: 37930] Re: EUC_JP を UTF8 に変換するには

Hiroki Kataoka kataoka @ interwiz.jp
2007年 1月 10日 (水) 20:19:27 JST


片岡です。

Morita Kazuro wrote:
> 言い出しっぺですが、PostgreSQLの偉い人たちの話が始まってしまったので
> もう私が口出しをできる余地はなくなりました。

 いえいえ、お気軽にどうぞ。

>> 蛇足ですが、SJIS⇔EUC_JP間の外字の変換は、昔からあるSJIS-
>> EUC変換アルゴリズムでは変換できません。意外と複雑です。
> 
> これについてですが、ドコモ固有文字については単純なアルゴリズムで
> 問題はありませんでした。私は6〜7年前に携帯のサイトを始めたころ
> PostgreSQL が 6.x.x で2バイト文字の処理ができず(知らなかっただけ?)、
> かといって SJIS のままでは 0x5cの問題があるので、昔からある単純な
> アルゴリズムで EUC に変換していました。
> 
> SQL_ASCII で変換も逆変換もすべて自分流だらか、うまく行っている
> ように見えただけ?

 「昔からある単純なアルゴリズム」の定義が違うのかもしれませんね。私は、
計算だけで変換できるレベルのアルゴリズムを言っていました。古すぎるのかも。

 ドコモ固有文字というのは、SJISのいわゆる外字領域を使っています。それも
95区〜114区まである外字領域のうち111区〜114区の部分です。PostgreSQLが採
用しているSJIS⇔EUC変換規則(※)では、SJISの95区〜104区はEUCのG1 85区〜94
区に、SJISの105区〜114区はEUCのG3 85区〜94区にマッピングされますから、ド
コモ固有文字はG3 91区〜94区に変換されることになります。ちなみにG3は1文字
3バイトですから、ドコモの絵文字も1文字3バイトということになります(EUCで
は)。

 以上が、意外と複雑な理由です。

(※)OSF 日本ベンダ協議会 (OSF/JVC) 推奨
      日本語 EUC ・シフト JIS 間コード変換仕様
      http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
      (すでにページがないのでarchive.orgからアクセスしてください。
       
http://web.archive.org/web/20060101214908/http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
)

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



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