北朝鮮の文字コード KPS 9566 について
日本には JIS X 0208 、中国には GB 2312 、韓国には KS X 1001 という文字コードがあるように、北朝鮮には KPS 9566 という文字コードが存在する。 KPS 9566の符号化方式としてはEUC-KP等がある。
KPSというのは「国規」と呼ばれる北朝鮮の国家規格のことで、KPS 9566は北朝鮮国内ではしばしば「国規 9566」「国規コード」と呼ばれている。
この文字コードには全角の英数字や記号等に加えチョソングルチャ2679字と朝鮮語で使われる漢字4653字が収録されている。(チョソングルチャというのはハングルの北朝鮮での名称で朝鮮文字という意味)
有名な話としては "金", "日", "成", "金", "正", "日", "金", "正", "恩" にあたる太字のチョソングルチャが「尊名」というカテゴリで通常のチョソングルチャ領域とは別の領域に収録されている。しかし、尊名文字を含むいくつかの文字はUnicodeに収録されていないのでUnicodeの私用領域(PUA)内に割り当てて使っているようだ。

画像 : RedStar 3.0に搭載されている朝鮮語IMEの文字一覧画面
背景: なぜこの文を書こうと思ったか
Wikipediaにはこんな記述がある。
しかしKPS 9566をサポートするソフトウェアがほとんど存在しないため、代わりにEUC-KRを使用しており、文字集合自体は国際標準などで参照用途として使用することが多い。
出典: KPS 9566 - Wikipedia(2025年1月3日 (金) 22:37 (UTC) の版)
インターネットで調べていると他にもKPS 9566はほとんど使われていないという主旨の文章がいくつか見つかる。
確かにインターネット上でみつかる多くのソフトウェアはKPS 9566に対応しているものはほとんどない。
しかし日本国内でJIS X 0208を前提としたソフトウェアが開発され使われてきたように、北朝鮮国内でもKPS 9566を前提としたソフトウェアがあったのだろうと考えるのが自然だろう。
なので今回はインターネット上で見つかる数少ない北朝鮮製ソフトウェアの中から KPS 9566 が使われているものをいくつか探してみる。
探索1: Linuxソフトウェア
北朝鮮のソフトウェアといってまず有名なものに RedStar OS と呼ばれるLinuxディストリビューションがある。
これは一般ユーザー向けにLinuxを普及させようと朝鮮コンピューターセンターがRHELをカスタムしたもののようだ。
今回は2012年頃にリリースされたRedStar 3.0について探索してみる。
テキストエディタ
RedStar 3.0に搭載されているテキストエディタを開き、ツールバーから ファイル→新規保存 で開くダイアログボックスの中にエンコーディング情報というプルダウンリストを開くと文字コード一覧が表示され中には朝鮮語 (KPS9566)という選択肢がある。なお、韓国のエンコーディングは利用できない。

画像 : RedStar 3.0に搭載されているテキストエディタの画面
Webブラウザ
RedStar 3.0にはFirefoxをカスタムしたネナラブラウザというWebブラウザがある。(「ネナラ」というのは朝鮮語で「私の国」という意味である。)
このブラウザのツールバーから 表示→テキストエンコーディング と進むとKPS9566の選択肢が存在する。こちらも韓国のエンコーディングは利用できない。

画像 : RedStar 3.0に搭載されているネナラブラウザの画面
iconv
RedStar 3.0のiconvには実際にKPS 9566の実装がされていることが以下のコマンドで確認出来る。
$ iconv -l | grep "KP"
CSEUCKP//
CSKPS9566//
EUC-KP//
EUCKP//
KPS9566//
*ここでのKPS9566はEUC-KPの拡張エンコーディングでありほとんどのEUC-KPに対して下位互換性を持っている。
iconvでは韓国のエンコーディングも利用できるようだ。
$ iconv -l | grep "KR"
CSEUCKR//
CSISO2022KR//
EUC-KR//
EUCKR//
ISO-2022-KR//
ISO646-KR//
ISO2022KR//
MACUKRAINIAN//
Wine
RedStar 3.0には Windows環境サポートプログラム「万能 3.0」というWindowsソフトウェアを動かせるというものがあるが、その中身はWineである。その環境に含まれているWine Notepadの保存ダイアログボックスのEncodingからANSI/OEM DPR Koreanというものがありそれを選択するとKPS 9566で保存されるようだ。
探索2: Windowsソフトウェア
なぜRedStar 3.0のWineではシステムロケールとしてKPS 9566が利用できるのだろうかと考えてみると、RedStarの普及以前から北朝鮮ではKPS 9566で動くWindowsソフトウェアが存在していたのだろうと予想がつく。
インターネット上で見つかる北朝鮮製のWindowsソフトウェアに三興3.0という2004年頃の多国語辞典ソフトがあるのでここからみていこう。
付属のヘルプファイルには環境設定から他のプログラムにデータをコピペしたりするときに使う朝鮮語コードを選択することができるという主旨の説明がある。
この中の国規コード(B0A1)というのがEUC-KP(KPS 9566)のことのようだ。

画像 : 三興3.0のヘルプファイルにある環境設定画面のスクリーンショット

画像: 三興3.0のコンピューター用語辞典の「文字符号」という項目。JIS X 0208についての記述がある。
ここで見出しの문자부호という文字列をコピペしてみると文字化けしており溴齊飾闕という文字列になっていた。
同じ文字化けを再現できないかとRedStar 3.0のiconvで色々試してみていたら同じように文字化けさせる方法をみつけた。
$ echo "문자부호" | iconv -c -f UTF-8 -t KPS9566 | iconv -c -f BIG5 -t UTF-8
溴齊飾闕
どうやらKPS 9566でエンコードされたバイト列をBig5という繁体字中国語の文字コードでデコードすると同じように文字化けするようだ。
思案: なぜBig5なのか
三興3.0のEUC-KPでエンコードされた文字列をなぜWindowsはBig5でデコードするのだろうと考えていたらとあることを思い出した。
Adobe Photoshopを使っていたときのことである。

画像 : Adobe Photoshopでのフォント選択画面2つ
Photoshopのフォントを選択するときの一覧は言語がグループになっていて、その言語に合わせたサンプルテキストを表示してくれるのだが、この画像の左側のように多くの北朝鮮製のフォントが繁体字のフォントとして認識されていてほとんどのサンプルテキストが豆腐だらけになってしまうという悲しい事件が起こってしまっている。
ただ、この画像の右側のように比較的新しい北朝鮮製のフォントは韓国語として認識されて서체견본(書体見本)と正しく表示されている。
また、三興3.0のヘルプファイルには初回起動時にシステムが対応しているコードが自動的に選択されるといった説明もある。つまりKPS 9566に対応したソフトウェアが他にも存在し、EUC-KP(KPS 9566)で朝鮮語を扱っているシステムなのかどうかを検知することができるということなのだろう。
考察: 一時期の北朝鮮ではWindowsに用意されている韓国基準の韓国語という言語設定を国内で使いたくなかったあまりに、繁体字中国語を表すはずの識別子をEUC-KP(KPS 9566)の朝鮮語を表す識別子として扱うといった運用が行われていた可能性がある。
結論
北朝鮮の文字コードであるKPS 9566は「実際にはほとんど使われていない文字コード」と説明されることが多いが、実際に北朝鮮製ソフトウェアを調査してみると、RedStarの各種ソフトウェアやWindows向けソフトウェアの中でKPS 9566の存在を確認することができた。
少なくともこれらのソフトウェアを見る限りKPS 9566は単なる規格だけの文字コードではなく、北朝鮮国内のコンピューター環境で実際に利用されていたのだと考えられる。
