LoginSignup
3
2

More than 5 years have passed since last update.

JIS90で追加の2文字とSJIS外字のPostgreSQLでの取り扱い

Posted at

JIS90で追加の2文字

PostgreSQLが、JIS90で追加の2文字「凜(SJISではEAA3)」「熙(SJISではEAA4)」のSJISをUTF-8に変換できるか確認する。

  • 1. テーブルhogeにSJISの「凜」と「熙」を格納する。
CREATE TABLE hoge (x TEXT);
SET client_encoding TO sjis;
\copy hoge from program 'echo "EAA3" | xxd -r -p'
\copy hoge from program 'echo "EAA4" | xxd -r -p'
  • 2. UTF-8変換された2文字とそれらのコードを確認する。
SET client_encoding TO utf8;
SELECT x, to_hex(ascii(x)) FROM hoge;
  • 3. 確認結果は以下となった。
 x  | to_hex 
----+--------
 凜 | 51dc
 熙 | 7199
(2 rows)

以上より、PostgreSQLは、JIS90で追加の2文字「凜(SJISではEAA3)」「熙(SJISではEAA4)」のSJISを、「凜(U+51DC)」「熙(U+7199)」のUTF-8に変換する。

SJIS外字

PostgreSQLが、SJISのユーザ定義外字(F040〜F9FC)を格納できるか確認する。

  • 1. テーブルhogeにSJIS外字(例えばF040)を格納する。
CREATE TABLE hoge (x TEXT);
SET client_encoding TO sjis;
\copy hoge from program 'echo "F040" | xxd -r -p'
  • 2. 以下のエラーが発生してSJIS外字の格納に失敗する。
2018-12-06 02:28:45 JST ERROR:  invalid byte sequence for encoding "UTF8": 0xf0 0x40   
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2