①や㈱が別の文字になる。機種依存文字と、変換で消える文字
文字化け・文字コードのコラム
丸囲みの「①」や、括弧付きの「㈱」。
これらを含む文書を別の環境に渡すと、違う文字に変わったり、消えたりすることがあります。
機種依存文字と呼ばれてきたもので、いまも変換の場面で問題になります。
なぜ環境によって変わるのか
文字コードは、文字と番号の対応表です。
かつて日本語の環境では、この対応表がメーカーごとに拡張されていました。
同じ番号に、あるメーカーは「①」を割り当て、別のメーカーは違う文字を割り当てる。
そうすると、番号だけが送られた先で、意図と違う文字が表示されます。
現在広く使われているUTF-8では、この重複は整理されています。
それでも問題が残るのは、古い対応表を使う場面がまだあるためです。
変換で落ちる文字がある
UTF-8には収録されていて、Shift_JISには収録されていない文字があります。
- 絵文字
- 一部の漢字(人名や地名で使われる字体)
- 特殊な記号
こうした文字を含むテキストをShift_JISに変換すると、対応する番号が無いため、そのまま持っていけません。
変換の実装によって、疑問符に置き換わったり、その文字だけ消えたりします。
厄介なのは、この脱落が警告なしに起きることです。
変換は成功したように見えて、後から読み返すと文字が欠けている。原文が手元に無ければ、何が消えたのかも分かりません。
変換する前に確認する
Shift_JISへの変換が必要な場面では、事前に次を確認しておくと安全です。
- 絵文字が含まれていないか
- 丸囲み数字や単位記号(㎡、℡など)が含まれていないか
- 人名の漢字に、見慣れない字体が混ざっていないか
含まれている場合、そのまま変換すると欠けます。
先に別の表記へ置き換えておく(「①」を「(1)」にする、「㎡」を「m2」にする)ほうが、後から気づくより安全です。
CSVで起きやすい
実務でこの問題に当たりやすいのは、CSVを扱う場面です。
ExcelでCSVを開くために文字コードを変換する。その途中で、商品名に入っていた「㎡」や、備考欄の絵文字が落ちる。
表そのものは開けるので、欠落に気づかないまま作業が進みます。
件数が多いほど、目視での発見は難しくなります。
変換の前後で文字数を比べる、変換後に問題の文字で検索してみる。そういった確認を挟んでおくと、後から気づく事態を減らせます。
そもそも変換しない選択
変換先をUTF-8にできるなら、それが一番確実です。
Shift_JISが必要になるのは、受け取る側のソフトがそれしか読めない場合です。
先に相手の要件を確認しておくと、無駄な変換と、それに伴う文字の欠落を避けられます。
ファイルの文字コードをブラウザ内で変換
MojiRescueなら、ファイルをドロップするだけで文字コード・BOM・改行コードを変換できます。ファイルは外部に送信されません。