ANSII是标准国际编码,只有256个字符,没有汉字,所以表示不了汉字
你说的应该是ansi编码吧,那是系统根据当前地区然后确定的当地编码,例如大陆的ansi编码就代表 国标码GBK编码。
如果是台湾的话,ansi就应该是big5……
这里面涉及编码范围问题,Unicode,big5,gbk国标码都是两个字节表示一个汉字,而utf8是三个字节表示一个汉字。
而且这几种编码中有大量重叠,很难直接判断一个字是哪一种编码,
例如下面:汉字编码范围
名称 第一字节 第二字节
GB2312 0xB0-0xF7(176-247) 0xA0-0xFE(160-254)
GBK 0x81-0xFE(129-254) 0x40-0xFE(64-254)
Big5 0x81-0xFE(129-255) 0x40-0x7E(64-126)
0xA1-0xFE(161-254)
我这里有一些相关解释,可以看看>
ASCII值
控制字符
ASCII值
控制字符
ASCII值
控制字符
ASCII值
控制字符
0
NUT
32
(space)
64
@
96
、
1
SOH
33
!
65
A
97
a
2
STX
34
”
66
B
98
b
3
ETX
35
#
67
C
99
c
4
EOT
36
$
68
D
100
d
5
ENQ
37
%
69
E
101
e
6
ACK
38
&
70
F
102
f
7
BEL
39
,
71
G
103
g
8
BS
40
(
72
H
104
h
9
HT
41
)
73
I
105
i
10
LF
42
74
J
106
j
11
VT
43
+
75
K
107
k
12
FF
44
,
76
L
108
l
13
CR
45
-
77
M
109
m
14
SO
46
78
N
110
n
15
SI
47
/
79
O
111
o
16
DLE
48
0
80
P
112
p
17
DCI
49
1
81
Q
113
q
18
DC2
50
2
82
R
114
r
19
DC3
51
3
83
X
115
s
20
DC4
52
4
84
T
116
t
21
NAK
53
5
85
U
117
u
22
SYN
54
6
86
V
118
v
23
TB
55
7
87
W
119
w
24
CAN
56
8
88
X
120
x
25
EM
57
9
89
Y
121
y
26
SUB
58
:
90
Z
122
z
27
ESC
59
;
91
[
123
{
28
FS
60
<
92
/
124
|
29
GS
61
=
93
]
125
}
30
RS
62
>
94
^
126
~
31
US
63
95
—
127
DEL
NUL 空
VT 垂直制表
SYN 空转同步
SOH 标题开始
FF 走纸控制
ETB 信息组传送结束
STX 正文开始
CR 回车
CAN 作废
ETX 正文结束
SO 移位输出
EM 纸尽
EOY 传输结束
SI 移位输入
SUB 换置
ENQ 询问字符
DLE 空格
ESC 换码
ACK 承认
DC1 设备控制1
FS 文字分隔符
BEL 报警
DC2 设备控制2
GS 组分隔符
BS 退一格
DC3 设备控制3
RS 记录分隔符
HT 横向列表
DC4 设备控制4
US 单元分隔符
LF 换行
NAK 否定
DEL 删除
可以得到汉字的每个字节的ASCII码(内码)值,也可以得到它们的区位码:
#include<stdioh>
int main()
{unsigned char s[11]; int i,a,b;
printf("请输入姓名:");
gets(s);
printf("汉字\tASCII码\t\t内码\t区位码\n");
for(i=0;s[i];i+=2)
{ a=s[i]; b=s[i+1];
printf(" %c%c :\t%d %d\t\t%X%X\t%d",a,b,a,b,a,b,a-160);
if(b<170)printf("0%d\n",b-160);
else printf("%d\n",b-160);
}
system("pause");
return 0;
}
ASCII全部都是特殊字符、数字、字母,没有汉字的。
解释:汉字是两个字节,对应的是两个ASCII,并不是唯一确定的,这个是不被允许的。举例:密码中不能包含汉字的原因就是这样的,如果包含汉字,那么就没法区分这个联系的两个字符是一个汉字还是两个字节,也就不能确定唯一性了,这肯定是不行的。
wchar_t 就是 unsigned short
用 wchar_t 方便很多,可以直接判断正负,即最高位是否为1,当然,这只是粗略的判断,要准确判断,你可以查一下unicode字符集中汉字编码范围。
用 char 的方法类似,先判断是否小于0,如果不小于0,则是一个标准的ASCII字符,否则和后面的一个char组成一个汉字。
Java活的字符串ASCII码值:
public class Test {
public static void main(String[] args) {
Test t=new Test();
tgetASCii("1");//传入要获取ASCII的字符串
}
String getASCii(String aa) {
String a = aa;
byte[] i = agetBytes();
for (byte b : i) {
Systemoutprintln(b);
}
return null;
}
}
以上就是关于汉字是如何转换成ASCII代码的全部的内容,包括:汉字是如何转换成ASCII代码的、ASCII码与汉字编码、谁知道汉字对应的ASCII码表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)