半角カナ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
半角カナ (はんかくカナ) とは、JIS X 0208 など他の片仮名を含む文字集合と同時に運用される場合の JIS X 0201 の片仮名文字集合の通称である。漢字を含む文字集合で定義された片仮名に対して、半分の文字幅で表示されることが一般的であったためこのように呼ばれる。JIS X 0201 で規定される 8 ビット符号化および Shift_JIS において 0xA1-0xDF の範囲の 1 バイト文字がこれにあたる。また、Shift_JIS や EUC-JP などの符号化方式や Unicode でも互換性の目的でこの文字集合をもっている。
これらの文字は過去との互換性の維持のために用意されており、新規の文書等では使うべきでないとされている[1]。
目次 |
[編集] 歴史
ASCII には、7 ビットで表現される 128 文字分のエリアにしか文字は定義されておらず、そこに制御文字、ラテン文字、数字、約物などが配置されている。ASCII を元に制定された国際規格 ISO 646 では 10 文字が各国特有の文字、記号と交換可能であったが、ラテン文字以外で書かれる言語を符号化するには不足していたため、日本では、ラテン文字集合とは別に片仮名と日本語用の句読点などを収録した片仮名文字集合を規定し、7 ビット環境または 8 ビット環境で運用する JIS X 0201 が制定された。規格で規定された符号化方式のうち、広く使われたのは 0x20–0x7E にラテン文字集合、0xA1–0xDF に片仮名文字集合を割り当てた 8 ビット符号化方式である。コンピュータで漢字を扱うことが困難であった草創期は、この片仮名を用いて日本語でメッセージを表示していた。そして後に JIS X 0208 が規定され漢字などが扱えるようになった際、それまでの JIS X 0201 の資産がそのまま使えるように、JIS X 0208 をそのまま使うのではなく、JIS X 0201 で空いていた領域に JIS X 0208 の文字コードを移動 (Shift) して当てはめる Shift_JIS が開発され、使用されるようになった。
なお、大型コンピュータ(メインフレーム)で使われていた EBCDIC コードでは、各社ごとに 8 ビットで表現されるカタカナや日本語の句読点コードを定義していたために、各社間の互換性を欠いていた状況であった。
いずれにしても、コンピュータによる漢字処理が一般化するのは 1980 年代中頃からで、それまでは 8 ビットのカタカナを用いてメッセージの表示やデータベースが構築されていた。かつてのダイレクトメールのコンピュータによる宛名印字がすべてカタカナであったのは、このためである。
[編集] 呼称の是非
JIS X 0201 (もしくはASCII) と JIS X 0208 を組み合わせて使う場合、JIS X 0208 側の文字はほぼ正方形で、JIS X 0201 の文字は JIS X 0208 の文字の半分の幅・同じ高さで表示・印刷されることが一般的であった。そのため、JIS X 0201 の文字は「半角文字」、JIS X 0208 の文字は「全角文字」、特に JIS X 0201 の方の片仮名は「半角カナ」、「半角カタカナ」と呼ばれるようになった。しかしそもそも半角・全角は字体・フォントの文脈で使われる言葉であり、また一般に文字コードは文字の幅を規定するものではないため、この表現は間違いである。ただし、EUC-JP には文字表示幅の定義が含まれる[2]。また Unicode にも文字幅に関する規定が存在する。東アジアの文字幅を参照すること。
Shift_JIS では JIS X 0201 の片仮名は 1 バイト、漢字などは 2 バイトで表されることから「1 バイトカナ」と呼ばれることもある。しかし文字をあらわすのに必要なバイト数は符号化方式でそれぞれ異なる。実際、「半角カナ」相当の文字を表現するのに、EUC-JP では 2 バイト、UTF-16 では 2 バイト、UTF-8 では 3 バイトを要する。
このように正しい名称を与えることが難しいため、結局慣用的な「半角カナ」という呼称が用いられることが多いが、正確性に問題があることに意識がある場合は「いわゆる半角カナ」といった言い方をされることもある。「半角カナ」にこだわらず厳密な定義が必要な場合は、その文脈で使われている文字集合によって「JIS X 0201 のほうの片仮名」や「Unicode の半角・全角形の片仮名」と呼ばれる。
[編集] 符号化方式による半角カナの扱い
[編集] ISO-2022-JP
ISO-2022-JP は電子メール等で使われる符号化方式であり、エスケープシーケンスによって 7 ビットの領域に文字集合を指示して運用する。指示可能な文字集合は ASCII、JIS X 0201 ラテン文字、JIS X 0208-1978 および JIS X 0208-1983 であり、JIS X 0201 片仮名は含まれていない。一般に「メールでは半角カナは使えない」といわれるのはこの事による。
[編集] Shift_JIS
Shift_JIS は、JIS X 0201 の 8 ビット符号の未使用領域に漢字などの 1 バイト目を割り当てたエンコーディングであるので、エスケープシーケンスなどを用いず半角カナや漢字を使用できる。MS-DOS が全盛であった頃は、全角文字を使用できない環境との互換性の問題や、データ量や画面表示幅の節約などの面から、2 バイト日本語に半角カナが併用されることが頻繁であった。
1 バイト JIS X 0201 との共存を前提としたため、JIS X 0208 文字の 1 バイト目に使用できる領域が限られた結果、2 バイト目に 7 ビットコードを使用せざるを得なくなり、8 ビットを利用した符号化にも関わらず、Shift_JIS を理解しない処理系での扱いを難しいものにしてしまった。
[編集] EUC-JP
日本語 EUC (EUC-JP) も 8 ビット環境を前提とした文字コードだが、JIS X 0208 の 1 文字目にあたるコードは、JIS X 0201 を 1 バイトで表した場合の半角カナ部分に重なるように配置されている。そのため、半角カナに相当する文字を使用する必要がある場合は制御文字 SS2 (シングルシフト 2、0x8E) に続けて使用することになる (このため一見 2 バイトに見えるが、SS2 は文字集合を次の 1 文字分だけ切り替えるという印のため、片仮名自体はやはり 1 バイトで符号化される)。この記法によるカナ使用を実装していない処理系も多い。
EUC-JP において JIS X 0208 を表すために使用されるコード範囲 (0xA1-0xFE) は、1 バイトカナのコード範囲 (0xA1-0xDF) を完全に内包するため、偶数の文字数で書かれた Shift_JIS の半角カナは、EUC-JP 文字列とほとんど区別がつかない。逆に、EUC-JP の半角カナ(1 バイト目 0x8E、2 バイト目 0xA1-0xFE) 文字列も、Shift_JIS 文字列と区別がつかない。これが「半角カナは文字化けする」と言われる理由の 1 つである。
[編集] Unicode
過去、すでに多くの Shift_JIS 等の文書で半角カナが使用されており、それらの文書のコード変換において情報が欠損しないようにするために (いわゆる round-trip conversion の保証)、Unicode には通常の片仮名とは別に半角カナに相当する互換用文字が定義されている。具体的には Halfwidth and Fullwidth Forms という分類の中に Halfwidth Katakana variants として含まれている。あくまで過去の文章との互換のためであり、半角カナがお墨付きを得たと見るのは誤りである。とはいえ、将来のシステムで半角カナが非サポートとなるような事態はまず無くなったと考えてよい。
[編集] インターネットにおける半角カナ
[編集] 電子メール
電子メールを配送する SMTP やネットニュースを配送する NNTP といったプロトコルは 7 ビットの文字コードを使用するプロトコルであったため、日本では JUNET 時代に ISO-2022-JP を使用することがルールとなっていた。
ISO-2022-JP には半角カナが含まれないため、メッセージ中に半角カナを含むことはできない。ソフトウェアによっては誤ってメッセージ中に半角カナが含まれていた場合に、8 ビットコードのまま送信したり、エスケープシーケンスを用いたり、Quoted-printable などでエンコードし 7 ビット化して送信するソフトウェアが存在した。後者の場合には、対応したソフト同士であれば問題なく表示が出来るが、違うソフト同士や 8 ビットで送信された場合は正しく表示されないため、「半角カナを使うと文字化けする」と言われるようになった。ここから、ネット上の文章からの半角カナ撲滅を唱えるような急進的な意見が出現した。また、当初 Windows に付属していたメールソフトが、SI (シフトイン) とSO (シフトアウト) を使用した勝手な符号化方法を使用して、他のメールソフトとの互換性をなくしていたこともその意見を強めさせた。その後、Windows のメールソフトも、他のメールソフトと同じ符号化方法になったが、「いわゆる半角カナの利用は本来廃止すべきなので、あえて対応しない」という理由により、半角カナを実装していないメールソフトも多い。
その後、
- メールサーバの多くが SMTP を拡張し 8 ビットコードも扱えるようになった ESMTP に対応した
- メッセージ中に文字コードやエンコード方式の情報を明記できるようになった (MIME)
- Unicode の普及
などの変化により、現在では Shift_JIS を Base64 でエンコードすることなどで、半角カナを正当な方法で送受信でき、半角カナの使用により問題が発生することは以前より減っている。
なお、携帯電話(iモードなど)の電子メールでは、携帯電話網とインターネットとの接続部分(ゲートウェイ)にて、半角カタカナ→全角カタカナの変換が行われている。
[編集] World Wide Web
転送プロトコルである HTTP には SMTP のように 8 ビットコードを扱えないという問題は存在しない。文書を記述する HTML については、Shift_JIS や EUC-JP、Unicode など半角カナを扱える文字コードであれば、そのまま半角カナを使用できる。
インターネットバンキングでは全国銀行データ通信システムの互換性上、振込などでの口座名義に半角カナを直接入力する場合がある。全角入力した文字を半角カナのデータに変換する事で意図しない文字数の変化を避ける信頼性確保のためでもある。
電子掲示板に半角カナを書き込んでも、ほとんどの場合、文字化けしない。ただし、半角カナを使用した場合、前述したように Shift_JIS と EUC-JP を区別することが難しいため、ブラウザや CGI などで文字コードの自動認識に失敗する事が多いという問題がある。また、半角カナを表示不能な端末もある。
文字コードの自動認識は完全たり得ない為、HTTP レスポンスヘッダや META タグで文字コード情報のオプションパラメータを指定する場合もある。また、HTML のフォームでは、漢字を含む文字列を hidden として送信することで、確実に送信コードを判別するなどの手法も用いられている。こういった確実な対応がある場合、文字コード誤認の問題は発生しない。
[編集] 半角カナが使用されるケース
現在でも JIS X 0201 しか扱えない機器・端末などでは、日本語を表現する手段として半角カナが使用されている。またソフトウェアやデータの互換性を保つ目的で使用している場合もある。
なお、全角カナとの視覚的差異があることや、文字コード (8 ビット) によって、全角カナ (16 ビット) の約半分のバイト数しか要さないことなどの特徴から、現在でも積極的に使用されているケースもある。
前者の特徴は、等幅フォントを使用してテキストのみで表形式を表示する場合などで、上下位置などを合わせる目的として多く使用される。また、ニュアンスの微妙な違いを伝えたり、アスキーアートを作成するために用いられることも多い(ただし、発信者と受信者のフォントセットが異なる場合、これはうまくいかないことがある)。
後者の特徴は、例えばデータベースなどで使用可能なバイト数に制限がある場合や、1 バイトの文字しか使用できないシステムで使用されている。また、文字(パケット)通信に課金がなされるような場合(特に携帯電話などのパケット通信)に有利になるため、使用されることもある。
一般的なフォントでは幅が狭く表示されることから、Microsoft Windows ではメニュー部などで少ない面積でユーザーに情報を与える必要のある場面によく利用されていた。その後、ひらがな・(全角の)カタカナが細い造型のフォント (MS UI Gothic) を用意することによって、脱半角カナを図った。現在、新規のアプリケーションで半角カナをメニューに用いる例は無くなったとみてよい。ただ、一般的なパーソナルコンピュータと異なり、表示情報量に制約の大きい携帯電話や PDA などの画面を前提としたシステムでは、半角カタカナを用いることも多い。
[編集] 半角カナ一覧
この項目には、一部のコンピュータや一部の閲覧ソフトで表示できない文字が含まれています(詳細)。 |
上位4ビット | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | ||
下 位 4 ビ ッ ト |
0 | ー | タ | ミ | |||||||||||||
1 | 。 | ア | チ | ム | |||||||||||||
2 | 「 | イ | ツ | メ | |||||||||||||
3 | 」 | ウ | テ | モ | |||||||||||||
4 | 、 | エ | ト | ヤ | |||||||||||||
5 | ・ | オ | ナ | ユ | |||||||||||||
6 | ヲ | カ | ニ | ヨ | |||||||||||||
7 | ァ | キ | ヌ | ラ | |||||||||||||
8 | ィ | ク | ネ | リ | |||||||||||||
9 | ゥ | ケ | ノ | ル | |||||||||||||
A | ェ | コ | ハ | レ | |||||||||||||
B | ォ | サ | ヒ | ロ | |||||||||||||
C | ャ | シ | フ | ワ | |||||||||||||
D | ュ | ス | ヘ | ン | |||||||||||||
E | ョ | セ | ホ | ゙ | |||||||||||||
F | ッ | ソ | マ | ゚ |
黄色で塗りつぶした範囲は 7 ビットで表現できる領域、ピンクで塗りつぶした範囲は Shift_JIS の 1 バイト目として使用される領域である。
[編集] 関連項目
[編集] 脚注
- ^ JIS X 0208:1997 附属書 1 (規定) シフト符号化表現
- ^ 日本語 EUC の定義と解説, Revision 1.7, UI-OSF-USLP 共同技術資料 (1991年12月10日).