ASCIIと半角カナ一覧

「ANKコード」について

ASCII (American Standard Code for Infomation Interchange)は 最上位ビットを使用せず、7ビットの範囲(0x00-0x7F)で表現していました。 日本ではこれに最上位ビットも使用し8ビットの範囲(0x00-0xFF)とし、 独自にカタカナ(半角カナ)を押し込めました。

これは慣例的に使われていたに過ぎなかったのですが、やがて「ANKコード」 (Alphabet, Numerical digit, Katakana) と呼ばれ広く使われるようになり、1969年に 「JIS X 0201」 として正式に定義されました。

Shift_JIS系では1バイト文字に関しては「ANKコード」の文字コード値をそのまま使用しています。 EUC-JPやUTF-8でも文字コード値は異なるものの「半角カナ」は定義されています。

一方で全ての文字を7ビットで扱うことを前提としている 「ISO-2022-JP」では 「半角カナ」は正式には定義されていません。しかし独自にサポートしているアプリケーションも多数存在します。

メールのプロトコルSMTPでは、7ビットの文字しか使用してはいけないという決まりがあるため、 日本語を含むメールでは7ビットで表現することを前提にしている「ISO-2022-JP」が多用されました。 また「ISO-2022-JP」を独自に拡張し、半角カナをサポートしているメーラーもありました。

しかし、送信時に8ビット目をクリアしてしまうメーラーや 受け取っても半角カナは表示しないメーラーがあったり、 中継サーバーで8ビット目をクリアしてしまうこともあり、 半角カナを使用したメールは文字化けをすることがあったのです。 そのため「メールを送信する際は半角カナは禁止」とされていたのです。

「半角カナ」を「機種依存文字」としているサイトをたまに見かけます。 これはメールや「ISO-2022-JP」に限定して言えばおおむね正しいといえると思います。 しかし半角カナがWebでも化けるとか、半角カナが全般的に 機種依存文字であるかの様な説明は明らかに間違いといえます。

 下位4ビット
0123456789ABCDEF


4


00NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
10DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
20SP!"#$%&'()*+,-./
300123456789:;<=>?
40@ABCDEFGHIJKLMNO
50PQRSTUVWXYZ[\]^_
60`abcdefghijklmno
70pqrstuvwxyz{|}~DEL
80
90
A0
B0ソ
C0
D0
E0
F0

ちなみにMSXでは、さらに「0x80-0x9F」と「0xE0-0xFF」に、ひらがなと トランプマークなど6つの記号を押し込め、右画像のような文字セットにしていました。

「ANKコード」のMSX独自拡張とも言えるでしょう。 ひらがなの位置に注目すると、残り少ない空き領域に詰め込んだ様子が伺えます。

この頃は、1文字を7x7ドットや5x7ドットで表現するコンピュータが多く、 そもそも「半角」「全角」という区別や概念は存在せず、あくまで「カタカナ」でした。

0x20-0x3F, 0xA0-0xBF

ASCIIは記号が4ヶ所に別れて配置されています。一見分かりにくいのですが、 「0x20-0x3F」「0x40-0x5F」「0x60-0x7F」の大きく3つのエリアに分けると、意図を感じることが出来ます。

「0x20-0x3F」は数字と記号の一部で、記号も算術記号や数字に関連するものが多いです。 「0xA0-0xBF」は半角カナの前半です。

左右の表に対応する文字のビットの違いは最上位ビットだけです。よって、メールで半角カナを使用し、 最上位ビットがクリアされることにより文字化けが発生したのなら、 隣の表の対応する文字に化けている可能性が高いです。

文字16進10進2進 文字16進10進2進
SP0x203200100000 0xA016010100000
!0x213300100001 0xA116110100001
"0x223400100010 0xA216210100010
#0x233500100011 0xA316310100011
$0x243600100100 0xA416410100100
%0x253700100101 0xA516510100101
&0x263800100110 0xA616610100110
'0x273900100111 0xA716710100111
(0x284000101000 0xA816810101000
)0x294100101001 0xA916910101001
*0x2A4200101010 0xAA17010101010
+0x2B4300101011 0xAB17110101011
,0x2C4400101100 0xAC17210101100
-0x2D4500101101 0xAD17310101101
.0x2E4600101110 0xAE17410101110
/0x2F4700101111 0xAF17510101111
00x304800110000 0xB017610110000
10x314900110001 0xB117710110001
20x325000110010 0xB217810110010
30x335100110011 0xB317910110011
40x345200110100 0xB418010110100
50x355300110101 0xB518110110101
60x365400110110 0xB618210110110
70x375500110111 0xB718310110111
80x385600111000 0xB818410111000
90x395700111001 0xB918510111001
:0x3A5800111010 0xBA18610111010
;0x3B5900111011 0xBB18710111011
<0x3C6000111100 0xBC18810111100
=0x3D6100111101 0xBD18910111101
>0x3E6200111110 0xBE19010111110
?0x3F6300111111 ソ0xBF19110111111

0x40-0x5F, 0xC0-0xDF

「0x40-0x5F」はアルファベット大文字と記号の一部です。 「0xC0-0xDF」は半角カナの後半です。

文字16進10進2進 文字16進10進2進
@0x406401000000 0xC019211000000
A0x416501000001 0xC119311000001
B0x426601000010 0xC219411000010
C0x436701000011 0xC319511000011
D0x446801000100 0xC419611000100
E0x456901000101 0xC519711000101
F0x467001000110 0xC619811000110
G0x477101000111 0xC719911000111
H0x487201001000 0xC820011001000
I0x497301001001 0xC920111001001
J0x4A7401001010 0xCA20211001010
K0x4B7501001011 0xCB20311001011
L0x4C7601001100 0xCC20411001100
M0x4D7701001101 0xCD20511001101
N0x4E7801001110 0xCE20611001110
O0x4F7901001111 0xCF20711001111
P0x508001010000 0xD020811010000
Q0x518101010001 0xD120911010001
R0x528201010010 0xD221011010010
S0x538301010011 0xD321111010011
T0x548401010100 0xD421211010100
U0x558501010101 0xD521311010101
V0x568601010110 0xD621411010110
W0x578701010111 0xD721511010111
X0x588801011000 0xD821611011000
Y0x598901011001 0xD921711011001
Z0x5A9001011010 0xDA21811011010
[0x5B9101011011 0xDB21911011011
\0x5C9201011100 0xDC22011011100
]0x5D9301011101 0xDD22111011101
^0x5E9401011110 0xDE22211011110
_0x5F9501011111 0xDF22311011111

0x60-0x7F, 0xE0-0xFF

「0x60-0x7F」はアルファベット小文字と記号の一部です。「0xE0-0xFF」は使われていません。

「0x40-0x5F」と「0x60-0x7F」のグループはそれぞれ、日本語キーボード上は 同じキーに割り当てられており、Shiftキーを押すか押さないかの関係にあります。

文字16進10進2進 文字16進10進2進
`0x609601100000 0xE022411100000
a0x619701100001 0xE122511100001
b0x629801100010 0xE222611100010
c0x639901100011 0xE322711100011
d0x6410001100100 0xE422811100100
e0x6510101100101 0xE522911100101
f0x6610201100110 0xE623011100110
g0x6710301100111 0xE723111100111
h0x6810401101000 0xE823211101000
i0x6910501101001 0xE923311101001
j0x6A10601101010 0xEA23411101010
k0x6B10701101011 0xEB23511101011
l0x6C10801101100 0xEC23611101100
m0x6D10901101101 0xED23711101101
n0x6E11001101110 0xEE23811101110
o0x6F11101101111 0xEF23911101111
p0x7011201110000 0xF024011110000
q0x7111301110001 0xF124111110001
r0x7211401110010 0xF224211110010
s0x7311501110011 0xF324311110011
t0x7411601110100 0xF424411110100
u0x7511701110101 0xF524511110101
v0x7611801110110 0xF624611110110
w0x7711901110111 0xF724711110111
x0x7812001111000 0xF824811111000
y0x7912101111001 0xF924911111001
z0x7A12201111010 0xFA25011111010
{0x7B12301111011 0xFB25111111011
|0x7C12401111100 0xFC25211111100
}0x7D12501111101 0xFD25311111101
~0x7E12601111110 0xFE25411111110
DEL0x7F12701111111 0xFF25511111111

0x20-0xBF

最後に。0x20-0xBFの範囲を32文字ずつ並べておきます。

文字16進 文字16進 文字16進
SP0x20@0x40`0x60
!0x21A0x41a0x61
"0x22B0x42b0x62
#0x23C0x43c0x63
$0x24D0x44d0x64
%0x25E0x45e0x65
&0x26F0x46f0x66
'0x27G0x47g0x67
(0x28H0x48h0x68
)0x29I0x49i0x69
*0x2AJ0x4Aj0x6A
+0x2BK0x4Bk0x6B
,0x2CL0x4Cl0x6C
-0x2DM0x4Dm0x6D
.0x2EN0x4En0x6E
/0x2FO0x4Fo0x6F
00x30P0x50p0x70
10x31Q0x51q0x71
20x32R0x52r0x72
30x33S0x53s0x73
40x34T0x54t0x74
50x35U0x55u0x75
60x36V0x56v0x76
70x37W0x57w0x77
80x38X0x58x0x78
90x39Y0x59y0x79
:0x3AZ0x5Az0x7A
;0x3B[0x5B{0x7B
<0x3C\0x5C|0x7C
=0x3D]0x5D}0x7D
>0x3E^0x5E~0x7E
?0x3F_0x5FDEL0x7F

ちょこっとアンケート&メッセージ

このページに関するちょっとした感想または、要望、バグ・間違いの指摘、 質問・その他お問合せ等は、下記の送信欄からお送りください。 返信をご希望の方は「こちらのページ」からメッセージをお送りください。

「このページはお役に立ちましたか?」のアンケートとメッセージのどちらか一方でかまいません (両方書いていただけるとよりうれしいです)。お気軽にご利用ください (感想・フィードバック・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)


このページはお役に立ちましたか?