アプリはUnicode、データはSJIS

今さらながら、結局のところ、文字コードの話はここに落ち着くようだ。今日、会社でデータの整理をしていて思った。お客さまからもらったデータ、精査したが、テキストデータでUnicodeベースのものは一つも無かった。UTF8もない。UTF16も1件もない。全部シフトJIS。それも確信を持って、JIS90 ベースだといえる。JIS2004を意識したデータは1件もない。

国際化対応ということで、ソフトウェアはどれもこれもUnicode対応になっていく。これは止められない流れだ。厳密には、Unicode対応になった海外製のソフトが入ってくるというべきか。私のような日本人プログラマなら、シフトJISのお作法が身についているはず...もしかしたら若い連中は最初から Java で Unicode が当たり前なのかも知れないか。

その一方でUnicode 対応といっても、画面や紙に出力する場合は、現実には、Unicode 全体を使うのではなく、Unicode のサブセットを使うことになる。フォントの制約があるので、ユーザーが使いたいフォントで使える範囲に文字集合が制限されるのだ。
Unicode を100%使いこなせるのならば、一つの名簿データ内に、日本人の名前と中国人の名前を混在させることも可能だ。しかし、そうしたところで、フォントにMS ゴシックを選んでしまえば、中国人の名前は部分的に消えることになってしまう。日本語と共通して使う文字の部分は残るだろうが、中国独自の文字、言い換えれば JIS90(あるいは JIS2004)に含まれない範囲の文字は、フォントに含まれないために消えてしまうのだ。
こういった事故がおきないように、IMEでもある程度の制限がかかっているはずだ(日本語IMEでは簡体字は入力できないなど)。
全Unicodeを単独で表現できるフォントが配布されるまで、この問題は続くだろう(世界中には混在しえない組み合わせの言語もあるかも知れない)。

ということは、現実的に考えて、日本国内で広範囲にやり取りされるデータは、JIS90(あるいはJIS2004)か、仮にUnicodeであったとしてもJIS90かJIS2004に変換できる範囲でしか使えないことになる。
データをやり取りする際に、「UTF8 だけど JIS90 に変換できる範囲でお願い」とわざわざ言うくらいなら、最初から「JIS90で」あるいは「JIS2004で」と言ってしまったほうが、分かりやすくて間違いも少ないだろう。
Windows Vista の普及速度が遅いので、JIS2004がなかなか浸透しないという問題がもう一方にあり、結局のところ、私の身の回りは JIS90 だらけになってしまっている。

この状況が明日、明後日にいきなりひっくり返ることはないだろう。一人粋がってJIS2004 を使ったところで、周囲に迷惑をかけるだけだ。当面はデータ交換には JIS90 でシフトJISを使い続けるしかない。どうしてもそれが嫌なら、Excel形式のファイルを使って、別のトラブルと戦うのもいいだろう(洒落にならないくらい、このケースのほうが多かったりする)。

しかし、このテーマ、ここでいくら力を入れて分析してみても、現場のパンチャーさんは文字コードなんて何も気にしていないというのが現実なのだろうな...。

ついでに、プリンターに組み込みのフォントもJIS90のままだったりするので、安易にJIS2004には移行できない。
さらにメモついでに書いておくと、IPAフォントがJIS2004対応なので、これはちょっとしたかく乱要因になるかも知れない。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 2

なるほど(納得、参考になった、ヘー)
面白い

この記事へのコメント

もんかへ
2011年10月28日 12:56
それもそのはず。
何しろ出しているこちらがJIS78かJIS83なんで。JIS90を使うこと自体、ものすごく珍しいし、まずない。長年文字データに関わっているけどUnicode、UTF-8、UTF-16に接したことがない。自分の周りに関する限りまったく使われていない。
kazuyoshikakihara
2011年10月28日 21:06
もんかへさんこんにちは。もうこの記事を書いてから3年も経つのですね。それでも確かにおっしゃるとおり、未だにUnicode系のテキストデータが入ってきたことは一度もありません。プログラムはUTF-8で書く習慣になりましたが。
もんかへ
2012年09月30日 12:20
そうでしたか。
自分の場合は最終的には16進数のコード値でどうこうしないとならないので、プログラムもシフトJISで書いています。入出力するデータをプログラム中の固定の文字列を使って比較したり、検索したり、置換をする必要があります。そのときに必要としていない文字コード変換をするとバグのもとになってしまいます。それで今もプログラムはシフトJISのままなのです。

この記事へのトラックバック