JIS90で追加の2文字
PostgreSQLが、JIS90で追加の2文字「凜(SJISではEAA3)」「熙(SJISではEAA4)」のSJISをUTF-8に変換できるか確認する。
-
- テーブル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'
-
- UTF-8変換された2文字とそれらのコードを確認する。
SET client_encoding TO utf8;
SELECT x, to_hex(ascii(x)) FROM hoge;
-
- 確認結果は以下となった。
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)を格納できるか確認する。
-
- テーブルhogeにSJIS外字(例えばF040)を格納する。
CREATE TABLE hoge (x TEXT);
SET client_encoding TO sjis;
\copy hoge from program 'echo "F040" | xxd -r -p'
-
- 以下のエラーが発生してSJIS外字の格納に失敗する。
2018-12-06 02:28:45 JST ERROR: invalid byte sequence for encoding "UTF8": 0xf0 0x40