汉字是如何转换成ASCII代码的

汉字是如何转换成ASCII代码的,第1张

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码表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9471266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存