1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-03-16

はじめに

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

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

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


環境

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コマンドで文字コード変換を確認しました。

謝辞

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


以上です。

1
0
3

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?