AIX で 文字コード変換テーブル・カスタマイズの確認(iconv, uconvdef)


### はじめに


AIXで文字コード変換テーブルをカスタマイズする方法を確認しました。

:::note info
1) 文字コード変換のためのコマンド(uconvdef)を実行するファイルセット(bos.loc.adt.iconv) を導入
2) 文字コード変換テーブ(IBM-943)のカスタマイズ、コンパイル
3) カスタマイズした変換テーブルで変換確認
:::

<br>

<font color="Lightgray">文字コードを調べる機会があったため試した内容を記載しています。文字コードの複雑さを垣間見ました...</font>




---

### 環境

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 を選択
・新規ご使用条件に同意する　　　　　　　　　 -> 　　はい 

<br>

ファイルセット導入確認

```
# 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
#
```

<br>

ファイルセット導入後、文字コード変換テーブル(ucmap) が導入されます
/usr/lib/nls/loc/uconvTable下に文字コード変換テーブルを確認します

<details><summary>ls -ltr /usr/lib/nls/loc/uconvTable  (出力は折りたたんでいます)</summary>
# 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
#

</details>

---

### IBM-943.ucmap のカスタマイズ
 
IBM-943は、日本語 Microsoft Windows 環境用の互換コードセットです。
IBM-932 より新しい日本語ロケールのマルチバイト・コード・セットで 1983 配列シフト JIS と呼ばれます。

 参考 : [IBM-943 および IBM-932](https://www.ibm.com/docs/ja/aix/7.3?topic=sets-943-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コマンド](https://www.ibm.com/docs/ja/aix/7.3?topic=u-uconvdef-command)
　　　[uconvdef ソース・ファイル・フォーマット](https://www.ibm.com/docs/ja/aix/7.3?topic=formats-uconvdef-source-file-format)

---

### カスタマイズした変換テーブルでの文字の変換確認

"あい" と書いたファイルを用意します。

```
# 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マップで変換されていることがわかります。

<font color="Red">あ =>　82a0 </font>
い =>　82a2

0a00　は改行コードとNULL

<br>

参考：[iconvコマンド](https://www.ibm.com/docs/ja/aix/7.3?topic=i-iconv-command)


---

#### 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マップで変換されていることがわかります。

<font color="Red">あ =>　82f1 </font> 　　<= 変更した値で反映されている。
い =>　82a2

0a00　は改行コードとNULL



---

#### 補足

<br> 
なお、82f1 は 本来は "<font color="Red">ん</font>" にマッピングしています。

そのため以下のような事象が発生します。

```
# 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

<br>

---


### おわりに


uconvdef コマンドを使用してカスタマイズした文字コード変換テーブルをコンパイルし、iconvコマンドで文字コード変換を確認しました。




### 謝辞

こちらの記事を参照させていただきました。ありがとうございます。

https://qiita.com/kmh/items/8f609dece1699e74658c


<br>

以上です。