OpenBSDが動いているLOOXはOpenBSDのセットアップをしている中で、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)から録画データのタイトルを吸い出すソフトではまってしまった。タイトルのところどころに「・」が含まれているのだ。これは表示不可の文字であると意味している。OpenBSDのktermから見ても、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がいいように理解不能な文字を取り除いてくれていたようだ。どうりで、ヴィデオレコーダ上でタイトルから「新」を取り除いても、読みだしたタイトルには何も違いが見られなかったわけだ。