はじめに
AIXで文字コード変換テーブルをカスタマイズする方法を確認しました。
- 文字コード変換のためのコマンド(uconvdef)を実行するファイルセット(bos.loc.adt.iconv) を導入
- 文字コード変換テーブ(IBM-943)のカスタマイズ、コンパイル
- カスタマイズした変換テーブルで変換確認
文字コードを調べる機会があったため試した内容を記載しています。文字コードの複雑さを垣間見ました...
環境
AIX 7.3 TL1 SP1
# oslevel -s
7300-01-01-2246
ファイルセット bos.loc.adt.iconv をインストール
文字コード変換テーブルをコンパイルする uconvdef コマンドは AIX のデフォルトでは使用できず、AIX OS Base から追加のファイルセットをインストールします。
# smitty install_all
・ソフトウェアの入力デバイス/ディレクトリー -> リストから対象デバイスを選択
・インストールするソフトウェア -> リストからbos.loc.adt.iconv を選択
・新規ご使用条件に同意する -> はい
ファイルセット導入確認
# lslpp -l bos.loc.adt.iconv
Fileset Level State Description
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
bos.loc.adt.iconv 7.2.4.0 COMMITTED Language Converter Development
Toolkit
#
ファイルセット導入後、文字コード変換テーブル(ucmap) が導入されます
/usr/lib/nls/loc/uconvTable下に文字コード変換テーブルを確認します
ls -ltr /usr/lib/nls/loc/uconvTable (出力は折りたたんでいます)
# ls -ltr /usr/lib/nls/loc/uconvTable total 51392 -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-280.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-278.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-277.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-273.ucmap -rw-r--r-- 1 bin bin 16116 Sep 17 2014 IBM-1026.ucmap -rw-r--r-- 1 bin bin 16106 Sep 17 2014 IBM-037.ucmap -rw-r--r-- 1 bin bin 629040 Sep 17 2014 CNS11643.1986-2.ucmap -rw-r--r-- 1 bin bin 298732 Sep 17 2014 CNS11643.1986-1.ucmap -rw-r--r-- 1 bin bin 388324 Sep 17 2014 KSC5601.1987-0.ucmap -rw-r--r-- 1 bin bin 329407 Sep 17 2014 JISX0208.1983-0.ucmap -rw-r--r-- 1 bin bin 15935 Sep 17 2014 JISX0201.1976-0.ucmap -rw-r--r-- 1 bin bin 16118 Sep 17 2014 ISO8859-9.ucmap -rw-r--r-- 1 bin bin 15917 Sep 17 2014 ISO8859-7.ucmap -rw-r--r-- 1 bin bin 16071 Sep 17 2014 ISO8859-5.ucmap -rw-r--r-- 1 bin bin 16071 Sep 17 2014 ISO8859-4.ucmap -rw-r--r-- 1 bin bin 15742 Sep 17 2014 ISO8859-3.ucmap -rw-r--r-- 1 bin bin 16071 Sep 17 2014 ISO8859-2.ucmap -rw-r--r-- 1 bin bin 16118 Sep 17 2014 ISO8859-1.ucmap -rw-r--r-- 1 bin bin 292881 Sep 17 2014 IBM-udcTW.ucmap -rw-r--r-- 1 bin bin 112076 Sep 17 2014 IBM-udcJP.ucmap -rw-r--r-- 1 bin bin 16568 Sep 17 2014 IBM-sbdTW.ucmap -rw-r--r-- 1 bin bin 963456 Sep 17 2014 IBM-eucTW.ucmap -rw-r--r-- 1 bin bin 406423 Sep 17 2014 IBM-eucKR.ucmap -rw-r--r-- 1 bin bin 451042 Sep 17 2014 IBM-eucJP.ucmap -rw-r--r-- 1 bin bin 965275 Sep 17 2014 IBM-948.ucmap -rw-r--r-- 1 bin bin 242626 Sep 17 2014 IBM-946.ucmap -rw-r--r-- 1 bin bin 520108 Sep 17 2014 IBM-944.ucmap -rw-r--r-- 1 bin bin 446767 Sep 17 2014 IBM-942.ucmap -rw-r--r-- 1 bin bin 564216 Sep 17 2014 IBM-939.ucmap -rw-r--r-- 1 bin bin 965134 Sep 17 2014 IBM-938.ucmap -rw-r--r-- 1 bin bin 963510 Sep 17 2014 IBM-937.ucmap -rw-r--r-- 1 bin bin 242542 Sep 17 2014 IBM-936.ucmap -rw-r--r-- 1 bin bin 519920 Sep 17 2014 IBM-934.ucmap -rw-r--r-- 1 bin bin 518343 Sep 17 2014 IBM-933.ucmap -rw-r--r-- 1 bin bin 446767 Sep 17 2014 IBM-932.ucmap -rw-r--r-- 1 bin bin 565104 Sep 17 2014 IBM-930.ucmap -rw-r--r-- 1 bin bin 15875 Sep 17 2014 IBM-875.ucmap -rw-r--r-- 1 bin bin 18399 Sep 17 2014 IBM-869.ucmap -rw-r--r-- 1 bin bin 18728 Sep 17 2014 IBM-865.ucmap -rw-r--r-- 1 bin bin 18775 Sep 17 2014 IBM-863.ucmap -rw-r--r-- 1 bin bin 18728 Sep 17 2014 IBM-861.ucmap -rw-r--r-- 1 bin bin 18728 Sep 17 2014 IBM-860.ucmap -rw-r--r-- 1 bin bin 18634 Sep 17 2014 IBM-857.ucmap -rw-r--r-- 1 bin bin 18681 Sep 17 2014 IBM-852.ucmap -rw-r--r-- 1 bin bin 18775 Sep 17 2014 IBM-850.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-500.ucmap -rw-r--r-- 1 bin bin 18728 Sep 17 2014 IBM-437.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-297.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-285.ucmap -rw-r--r-- 1 bin bin 16110 Sep 17 2014 IBM-284.ucmap -rw-r--r-- 1 bin bin 10391 Sep 17 2014 README -rw-r--r-- 1 bin bin 14285 Sep 17 2014 ISO8859-8.ucmap -rw-r--r-- 1 bin bin 20773 Sep 17 2014 ISO8859-6.ucmap -rw-r--r-- 1 bin bin 16801 Sep 17 2014 IBM-856.ucmap -rw-r--r-- 1 bin bin 21435 Sep 17 2014 IBM-1046.ucmap -rw-r--r-- 1 bin bin 425915 Sep 17 2014 IBM-eucCN.ucmap -rw-r--r-- 1 bin bin 450400 Sep 17 2014 IBM-935.ucmap -rw-r--r-- 1 bin bin 441033 Sep 17 2014 IBM-837.ucmap -rw-r--r-- 1 bin bin 11786 Sep 17 2014 IBM-836.ucmap -rw-r--r-- 1 bin bin 452451 Sep 17 2014 IBM-1381.ucmap -rw-r--r-- 1 bin bin 352697 Sep 17 2014 GB2312.1980-0.ucmap -rw-r--r-- 1 bin bin 352709 Sep 17 2014 GB2312.1980-0-GR.ucmap -rw-r--r-- 1 bin bin 1498824 Sep 17 2014 CNS11643.CT-GR.ucmap -rw-r--r-- 1 bin bin 629253 Sep 17 2014 CNS11643.1986-2-GR.ucmap -rw-r--r-- 1 bin bin 298980 Sep 17 2014 CNS11643.1986-1-GR.ucmap -rw-r--r-- 1 bin bin 16084 Sep 17 2014 IBM-922.ucmap -rw-r--r-- 1 bin bin 16084 Sep 17 2014 IBM-921.ucmap -rw-r--r-- 1 bin bin 16104 Sep 17 2014 IBM-1122.ucmap -rw-r--r-- 1 bin bin 16104 Sep 17 2014 IBM-1112.ucmap -rw-r--r-- 1 bin bin 965663 Sep 17 2014 big5.ucmap -rw-r--r-- 1 bin bin 607610 Sep 17 2014 GBK.ucmap -rw-r--r-- 1 bin bin 19933 Sep 17 2014 IBM-1129.ucmap -rw-r--r-- 1 bin bin 14853 Sep 17 2014 TIS-620.ucmap -rw-r--r-- 1 bin bin 18554 Sep 17 2014 IBM-1131.ucmap -rw-r--r-- 1 bin bin 18601 Sep 17 2014 IBM-1125.ucmap -rw-r--r-- 1 bin bin 15862 Sep 17 2014 IBM-1124.ucmap -rw-r--r-- 1 bin bin 15860 Sep 17 2014 IBM-1123.ucmap -rw-r--r-- 1 bin bin 251911 Sep 17 2014 IBM-943.ucmap -rw-r--r-- 1 bin bin 329151 Sep 17 2014 JISX0208.1983-GR.ucmap -rw-r--r-- 1 bin bin 13231 Sep 17 2014 JISX0201.1976-GR.ucmap -rw-r--r-- 1 bin bin 15799 Sep 17 2014 ISO8859-15.ucmap -rw-r--r-- 1 bin bin 111957 Sep 17 2014 IBM-udcJP-GR.ucmap -rw-r--r-- 1 bin bin 15787 Sep 17 2014 IBM-924.ucmap -rw-r--r-- 1 bin bin 18499 Sep 17 2014 IBM-858.ucmap -rw-r--r-- 1 bin bin 16639 Sep 17 2014 IBM-1252.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1149.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1148.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1147.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1146.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1145.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1144.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1143.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1142.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1141.ucmap -rw-r--r-- 1 bin bin 15840 Sep 17 2014 IBM-1140.ucmap -rw-r--r-- 1 bin bin 16005 Sep 17 2014 IBM-1137.ucmap -rw-r--r-- 1 bin bin 251844 Sep 17 2014 IBM-943C.ucmap -rw-r--r-- 1 bin bin 16147 Sep 17 2014 IBM-1047.ucmap -rw-r--r-- 1 bin bin 6616 Sep 17 2014 ISO8859-9-GR.ucmap -rw-r--r-- 1 bin bin 4783 Sep 17 2014 ISO8859-8-GR.ucmap -rw-r--r-- 1 bin bin 6411 Sep 17 2014 ISO8859-7-GR.ucmap -rw-r--r-- 1 bin bin 10624 Sep 17 2014 ISO8859-6-GR.ucmap -rw-r--r-- 1 bin bin 6570 Sep 17 2014 ISO8859-5-GR.ucmap -rw-r--r-- 1 bin bin 6569 Sep 17 2014 ISO8859-2-GR.ucmap -rw-r--r-- 1 bin bin 6613 Sep 17 2014 ISO8859-1-GR.ucmap -rw-r--r-- 1 bin bin 24167 Sep 17 2014 ISO1256.ucmap -rw-r--r-- 1 bin bin 16142 Sep 17 2014 IBM-870.ucmap -rw-r--r-- 1 bin bin 16853 Sep 17 2014 IBM-1251.ucmap -rw-r--r-- 1 bin bin 396823 Sep 17 2014 KSC5601.1987-1.ucmap -rw-r--r-- 1 bin bin 420502 Sep 17 2014 IBM-1363.ucmap -rw-r--r-- 1 bin bin 834051 Mar 09 2017 IBM-9563.ucmap -rw-r--r-- 1 bin bin 188180 Mar 25 2019 BIG5-HKSCS__P2 -rw-r--r-- 1 bin bin 5752 Mar 25 2019 IBM-858 -rw-r--r-- 1 bin bin 5752 Mar 25 2019 IBM-856 -rw-r--r-- 1 bin bin 5752 Mar 25 2019 IBM-850 -rw-r--r-- 1 bin bin 135444 Mar 25 2019 IBM-943C -rw-r--r-- 1 bin bin 135444 Mar 25 2019 IBM-943 -rw-r--r-- 1 bin bin 132244 Mar 25 2019 IBM-932 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 IBM-870 -rw-r--r-- 1 bin bin 4728 Mar 25 2019 IBM-1251 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 IBM-1129 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 IBM-1124 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 IBM-1047 -rw-r--r-- 1 bin bin 4984 Mar 25 2019 IBM-1046 -rw-r--r-- 1 bin bin 4984 Mar 25 2019 IBM-1006 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 TIS-620 -rw-r--r-- 1 bin bin 126068 Mar 25 2019 KSC5601.1987-1 -rw-r--r-- 1 bin bin 126068 Mar 25 2019 KSC5601.1987-0 -rw-r--r-- 1 bin bin 84596 Mar 25 2019 JISX0212.1990-GL -rw-r--r-- 1 bin bin 93812 Mar 25 2019 JISX0208.1983-GR -rw-r--r-- 1 bin bin 93812 Mar 25 2019 JISX0208.1983-0 -rw-r--r-- 1 bin bin 3960 Mar 25 2019 JISX0201.1976-GR -rw-r--r-- 1 bin bin 3704 Mar 25 2019 JISX0201.1976-GL -rw-r--r-- 1 bin bin 3960 Mar 25 2019 JISX0201.1976-0 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-9-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-9 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-8-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-8 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-7-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-7 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-6-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-6 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-5-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-5 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-4 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-3 -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-2-GR -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-2 -rw-r--r-- 1 bin bin 4472 Mar 25 2019 ISO8859-15 -rw-r--r-- 1 bin bin 3960 Mar 25 2019 ISO8859-1-GR -rw-r--r-- 1 bin bin 4216 Mar 25 2019 ISO8859-1 -rw-r--r-- 1 bin bin 5752 Mar 25 2019 ISO1256 -rw-r--r-- 1 bin bin 51316 Mar 25 2019 IBM-udcTW -rw-r--r-- 1 bin bin 64116 Mar 25 2019 IBM-udcJP-GR -rw-r--r-- 1 bin bin 64116 Mar 25 2019 IBM-udcJP -rw-r--r-- 1 bin bin 15988 Mar 25 2019 IBM-sbdTW -rw-r--r-- 1 bin bin 176460 Mar 25 2019 IBM-eucTW -rw-r--r-- 1 bin bin 171732 Mar 25 2019 IBM-eucKR -rw-r--r-- 1 bin bin 145076 Mar 25 2019 IBM-eucJP -rw-r--r-- 1 bin bin 215156 Mar 25 2019 IBM-9563 -rw-r--r-- 1 bin bin 162964 Mar 25 2019 IBM-1394 -rw-r--r-- 1 bin bin 202644 Mar 25 2019 IBM-1363 -rw-r--r-- 1 bin bin 4984 Mar 25 2019 IBM-1252 -rw-r--r-- 1 bin bin 89716 Mar 25 2019 CNS11643.1986-1 -rw-r--r-- 1 bin bin 182668 Mar 25 2019 big5 -rw-r--r-- 1 bin bin 153204 Mar 25 2019 IBM-9563__P2 -rw-r--r-- 1 bin bin 70772 Mar 25 2019 IBM-1399__P2 -rw-r--r-- 1 bin bin 140820 Mar 25 2019 IBM-1394__P2 -rw-r--r-- 1 bin bin 70772 Mar 25 2019 IBM-1390__P2 -rw-r--r-- 1 bin bin 88692 Mar 25 2019 CNS11643.1986-2 -rw-r--r-- 1 bin bin 213636 Apr 04 2019 BIG5-HKSCS -rw-r--r-- 1 bin bin 553096 Apr 17 2019 IBM-1399.ucmap -rw-r--r-- 1 bin bin 553096 Apr 17 2019 IBM-1390.ucmap -rw-r--r-- 1 bin bin 153204 Apr 17 2019 IBM-1399 -rw-r--r-- 1 bin bin 153204 Apr 17 2019 IBM-1390 lrwxrwxrwx 1 bin bin 40 Jan 21 12:37 IBM-1371__P2 -> /usr/lib/nls/loc/uconvTable/IBM-9563__P2 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 IBM-1371 -> /usr/lib/nls/loc/uconvTable/IBM-9563 lrwxrwxrwx 1 bin bin 43 Jan 21 12:37 JISX0208.1983-GL -> /usr/lib/nls/loc/uconvTable/JISX0208.1983-0 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 IBM-udcJP-GL -> /usr/lib/nls/loc/uconvTable/IBM-udcJP lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-3 -> /usr/lib/nls/loc/uconvTable/ISO8859-3 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-2 -> /usr/lib/nls/loc/uconvTable/ISO8859-2 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-1 -> /usr/lib/nls/loc/uconvTable/ISO8859-1 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-5 -> /usr/lib/nls/loc/uconvTable/ISO8859-5 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-4 -> /usr/lib/nls/loc/uconvTable/ISO8859-4 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-8 -> /usr/lib/nls/loc/uconvTable/ISO8859-8 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-7 -> /usr/lib/nls/loc/uconvTable/ISO8859-7 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-6 -> /usr/lib/nls/loc/uconvTable/ISO8859-6 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 ISO-8859-9 -> /usr/lib/nls/loc/uconvTable/ISO8859-9 lrwxrwxrwx 1 bin bin 38 Jan 21 12:37 ISO-8859-15 -> /usr/lib/nls/loc/uconvTable/ISO8859-15 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 IBM850 -> /usr/lib/nls/loc/uconvTable/IBM-850 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 CP932 -> /usr/lib/nls/loc/uconvTable/IBM-932 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 CP856 -> /usr/lib/nls/loc/uconvTable/IBM-856 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 CP850 -> /usr/lib/nls/loc/uconvTable/IBM-850 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 CP943 -> /usr/lib/nls/loc/uconvTable/IBM-943 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1006 -> /usr/lib/nls/loc/uconvTable/IBM-1006 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1129 -> /usr/lib/nls/loc/uconvTable/IBM-1129 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1124 -> /usr/lib/nls/loc/uconvTable/IBM-1124 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1046 -> /usr/lib/nls/loc/uconvTable/IBM-1046 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1252 -> /usr/lib/nls/loc/uconvTable/IBM-1252 lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 IBM1251 -> /usr/lib/nls/loc/uconvTable/IBM-1251 lrwxrwxrwx 1 bin bin 35 Jan 21 12:37 IBM-1256 -> /usr/lib/nls/loc/uconvTable/ISO1256 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 EUC-JP -> /usr/lib/nls/loc/uconvTable/IBM-eucJP lrwxrwxrwx 1 bin bin 36 Jan 21 12:37 CP1251 -> /usr/lib/nls/loc/uconvTable/IBM-1251 lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 EUC-TW -> /usr/lib/nls/loc/uconvTable/IBM-eucTW lrwxrwxrwx 1 bin bin 37 Jan 21 12:37 EUC-KR -> /usr/lib/nls/loc/uconvTable/IBM-eucKR lrwxrwxrwx 1 bin bin 32 Jan 21 12:37 BIG5 -> /usr/lib/nls/loc/uconvTable/big5 #IBM-943.ucmap のカスタマイズ
IBM-943は、日本語 Microsoft Windows 環境用の互換コードセットです。
IBM-932 より新しい日本語ロケールのマルチバイト・コード・セットで 1983 配列シフト JIS と呼ばれます。
参考 : IBM-943 および IBM-932
# file IBM-943.ucmap
IBM-943.ucmap: commands text
IBM-943.ucmap をコピーしてカスタマイズします。
# cd /usr/lib/nls/loc/uconvTable
# ls -l IBM-943*
-rw-r--r-- 1 bin bin 135444 Aug 12 2020 IBM-943
-rw-r--r-- 1 bin bin 251928 Jul 24 2020 IBM-943.ucmap #<= 変換テーブル
#
# cp -p IBM-943.ucmap IBM-943_CUSTOM.ucmap
# ls -l IBM-943*
-rw-r--r-- 1 bin bin 135444 Aug 12 2020 IBM-943
-rw-r--r-- 1 bin bin 251928 Jul 24 2020 IBM-943.ucmap
-rw-r--r-- 1 bin bin 251928 Jul 24 2020 IBM-943_CUSTOM.ucmap
#
カスタム文字コード変換テーブルを編集します。
# vi IBM-943_CUSTOM.ucmap
オリジナルとの差分比較。UCS-2 の U3042 にマッピングするコードを修正しました。
- (UCS-2(Universal Coded Character Set 2)は文字コード規格の一つですべての文字を 2 バイト(16ビット)の固定長で表現する文字符号化方式)
# diff IBM-943.ucmap IBM-943_CUSTOM.ucmap
632c632
< <U3042> \x82\xA0
---
> <U3042> \x82\xF1
修正前は UCS-2 で U3042 のコードは IBM-943 では 82A0 にマップ。
<U3042> \x82\xA0
修正後はUCS-2 で U3042 のコードを IBM-943 では 82F1 にマップ。
<U3042> \x82\xF1
uconvdef コマンドによるカスタム文字コード変換テーブルのコンパイル
修正したカスタム文字コード変換テーブルをコンパイルします。
# uconvdef -f IBM-943_CUSTOM.ucmap IBM-943_CUSTOM
Start processing the source file 'IBM-943_CUSTOM.ucmap'.
IBM-943_CUSTOM created.
#
参考:uconvdefコマンド
uconvdef ソース・ファイル・フォーマット
カスタマイズした変換テーブルでの文字の変換確認
"あい" と書いたファイルを用意します。
# cat /work/input.txt
あい
IBM-943 での変換確認
テキストファイル /work/input.txt の内容を UTF-8 から IBM-943 に変換し、od -x コマンドで16進数ダンプとして表示しています。
# cat /work/input.txt | iconv -f UTF-8 -t IBM-943 | od -x
0000000 82a0 82a2 0a00
0000005
IBM-943マップで変換されていることがわかります。
あ => 82a0
い => 82a2
0a00 は改行コードとNULL
参考:iconvコマンド
IBM-943_CUSTOM での変換確認
# cat /work/input.txt | iconv -f UTF-8 -t IBM-943_CUSTOM | od -x
0000000 82f1 82a2 0a00
0000005
#
このコマンドでは、テキストファイル /work/input.txt の内容をUTF-8からIBM-943_CUSTOMエンコーディングに変換し、od -x コマンドで16進数ダンプとして表示しています。
IBM-943_CUSTOMマップで変換されていることがわかります。
あ => 82f1 <= 変更した値で反映されている。
い => 82a2
0a00 は改行コードとNULL
補足
なお、82f1 は 本来は "ん" にマッピングしています。
そのため以下のような事象が発生します。
# cat /work/input.txt | iconv -f UTF-8 -t IBM-943 | iconv -f IBM-943 -t UTF-8
あい
# cat /work/input.txt | iconv -f UTF-8 -t IBM-943_CUSTOM | iconv -f IBM-943_CUSTOM -t UTF-8
んい
#
参考:日本語コード一覧表(AIX5.3)
https://public.dhe.ibm.com/systems/power/docs/aix/53/nl/ja/jp_codebook.pdf
おわりに
uconvdef コマンドを使用してカスタマイズした文字コード変換テーブルをコンパイルし、iconvコマンドで文字コード変換を確認しました。
謝辞
こちらの記事を参照させていただきました。ありがとうございます。
以上です。