隠居日録

2016年(世にいう平成28年)、発作的に会社を辞め、隠居生活に入る。日々を読書と散歩に費やす

UTF-8環境に移行でARIB外字を知る

OpenBSDが動いているLOOXOpenBSDのセットアップをしている中で、UTF-8にする必要があった。日本語入力のscimがLANGをUTF-8にしないと、日本語変換できなかったからだ。

実は我が家にはcubox-iがあり、debian jessiを動かして、色々な作業をさせている。ディスプレイはつないでないので、sshで接続して作業をすることになるのだが、家の外からはiPhone上のvSSHを利用している。このvSSHは日本製のアプリではないので、日本語の表示はできないと思っていた。設定の中のcharacter setにも日本語が表示できそうなものがなかったので、てっきり不可能だと思っていたのだ。しかし、実はUTF-8であれば、日本語表示が可能であることをたまたま見つけた。

かって20世紀のころは日本語の文字でトラブルを起こさないようにするのには、とりあえずEUC-JPにしておけばよかった。ところが世の中はいろいろ変わってきて、UTF-8が普及してくると、UTF-8の方が柔軟に対応できるようになってきたと思う。しかし、端末の漢字コードだけの問題ならば、さほど労力をかけず違うコードにできるが、漢字コードを扱っているソフトも変更するとなると、いささか面倒な作業が発生し、ためらってしまう。毎回"nkf -w"で変換して、作業をする手もあるが、それはそれで面倒だ。そのため、いまだにEUC-JPをずーと使い続けていたわけだが、今回UTF-8に移行する強いモチベーションができたので、移行してみた。

殆どのソフトはperlで書いており、いくつかのソフトはさほど労力をかけずに変更できたが、ヴィデオレコーダ(東芝 DBR-M590)から録画データのタイトルを吸い出すソフトではまってしまった。タイトルのところどころに「・」が含まれているのだ。これは表示不可の文字であると意味している。OpenBSDktermから見ても、windowsのtera termから見ても「・」なので、よほど特殊な文字なのだろうと思ったが、正体がつかめなかった(この時点で、テレビで録画タイトルを確認すればもう少し早くわかったかもしれない)。

内部で文字化けしているのか、おかしなデータがヴィデオレコーダから送られているのかわからないので、とりあえず、cubox-iとヴィデオレコーダのイーサパケットをキャプチャしてみた。その結果、ヴィデオレコーダから不明のコードが送られているのがわかった。それらは、16進数で

EE 86 84

EE 83 BE

EE 86 93

 のような値だった。いろいろ検索してうちに、ARIB外字というものがあることを発見した。その中の番組表用というのが該当しそうだ。表示できないものは「解」とか「字」とか「新」なので、あたりだと思う。調べてみたら、こんな対応だった。

0xee, 0x86, 0x84
0xee, 0x83, 0xbe
0xee, 0x86, 0x93
0xee, 0x86, 0x80
0xee, 0x86, 0x95
0xee, 0x86, 0x92
0xee, 0x86, 0x8d
0xee, 0x86, 0x94
0xee, 0x86, 0x82
0xee, 0x86, 0x8c
0xee, 0x86, 0x85 SS
0xee, 0x86, 0x83

今まで、UTF-8からEUC-JPの変換にNKFモジュールを使っており、nkfがいいように理解不能な文字を取り除いてくれていたようだ。どうりで、ヴィデオレコーダ上でタイトルから「新」を取り除いても、読みだしたタイトルには何も違いが見られなかったわけだ。