全角と半角を変換する
全角と半角の違い
日本語の環境では、同じに見える文字に2つの符号位置があります。
A(U+0041)と A(U+FF21)、1(U+0031)と 1(U+FF11)は、
見た目の幅が違うだけでなく、コンピュータにとってはまったく別の文字です。
そのため「ABC」で検索しても「ABC」は見つからず、
同じ名前のはずのデータが一致しないという形で問題が表に出ます。
半角カナはなぜ問題になるのか
英数字の全角・半角は「別の文字である」だけですが、 半角カナにはそれ以上の面倒があります。
濁点が別の文字になっている
半角カナには濁音・半濁音の文字がありません。濁点は独立した1文字として後ろに付きます。
| 表記 | 文字数 | 内訳 | |
|---|---|---|---|
| 全角 | ガ | 1文字 | U+30AC |
| 半角 | ガ | 2文字 | U+FF76 + U+FF9E |
| 全角 | パ | 1文字 | U+30D1 |
| 半角 | パ | 2文字 | U+FF8A + U+FF9F |
このため、1文字ずつ機械的に置き換えるツールは ガ を カ゛ にしてしまいます。
正しく変換するには、2文字を見て1文字に畳む必要があります。
逆方向では1文字を2文字に開きます。
文字数が合わなくなる
データベース は8文字ですが、全角にすると データベース で6文字になります。
「20文字以内」といった入力制限のある欄で、見た目より文字数が多いと弾かれるのはこれが原因です。
半角カナを全角に直すと収まることがあります。
システムによっては扱えない
半角カナは、日本語の文字コードの歴史の中で後から足された経緯があり、
受け付けないシステムが今も残っています。
たとえば古い日本語メールで使われる ISO-2022-JP には半角カナの居場所がなく、
送信の途中で失われたり別の文字に化けたりします。
銀行の振込人名義など、半角カナしか受け付けない逆の指定もあります。
変換で気をつける文字
見た目がほとんど同じで、変換すると意味が変わってしまう文字があります。 このツールはこれらを変換しません。
| 組 | なぜ変換しないか |
|---|---|
¥(U+FFE5)と \(U+005C) |
Shift_JIS では同じ位置に円記号が割り当てられていた経緯があり、 片方に寄せるとプログラムのパス指定などが壊れます |
~(U+FF5E)と 〜(U+301C) |
全角チルダと波ダッシュ。どちらも全角で、半角・全角の関係ではありません。 Windows と Mac で使われる方が違い、変換の途中で入れ替わると化けの原因になります |
−(U+2212)‐(U+2010)ー(U+30FC) |
マイナス記号、ハイフン、長音記号。見た目は似ていますが用途が違い、
まとめて - にすると「コーヒー」が「コ-ヒ-」になります |
長音記号 ー は、半角 ー(U+FF70)との対応だけを行います。
カタカナの一部として扱うので、「カタカナ」を変換したときだけ一緒に変わります。
どちらに揃えるべきか
用途によって答えが違います。迷ったら、次を目安にしてください。
- 住所録・名簿 — 英数字は半角、カタカナは全角。 郵便番号や電話番号は半角のほうが検索・並べ替えで扱いやすく、氏名のカナは全角が読みやすい
- システムへの入力 — 指定に従う。 「半角カナで入力してください」と指定される欄(銀行の振込人名義など)に全角を入れると弾かれます
- 表計算に取り込む CSV — 数値は必ず半角。
123のままでは数値として認識されず、計算に使えません - 文章 — 英数字は半角が読みやすいものの、決まりはありません。 社内の表記ルールがあればそれに従ってください
一括で揃えないほうがよい場面のほうが多い、というのがこのツールの前提です。 「すべて半角に」を選ぶと氏名のカナまで半角になり、 「すべて全角に」を選ぶと電話番号まで全角になります。 カテゴリごとに指定すれば、変えたいものだけを変えられます。
文字コードそのものが分からなくなっているファイルは 文字コードを判定してファイルを開く、 すでに化けてしまった文字列は 文字化けを直す を使ってください。