utf8编码

ascii码

我记得以前有个同事说过一个问题:

声明编码为utf8 和 gbk, 你怎么识别呢?

譬如美国人说我说的英语。。中国人说我说的中国话。两个人互相听不懂对方的话,有啥意义?

这里他就是没理解ASCII码。 在所有编码中ASCII码都是一样的,可以说是通用语。所以声明编码是有意义的。

utf8编码

utf8是一种可变长度字节编码方式。有的字符用1个字节表示,有的字符用2个字节表示,有的字节用3个字节表示。那么你怎么去解析呢?

有规则:

1字节 以0开头。。这里也就是ASCII码。。。所以说utf8中的ascii码 表示 和ascii码是一样的。

2字节 110xxx 10xxx

3字节 1110xxx 10xxx 10xxx

当按这个规则解析异常时,就表示解析失败。譬如解析时遇到111011011 10xxx 1110xxx 这就有问题了,第三个字节应该是10开头才对。

这种不能识别的字节,会被转成三个字节{11101111,10111111,10111101}, 也就是239,191,189

字符在8086cpu汇编中的表示

db 'xxxx' 即可, 编译器会把对应的字符转成相应的ASCII码对应的数据。如 ‘u’ 转成 75H

assume cs:code, ds:data
data segment
  db 'unIX'; db = define byte, 相当于 db 75H, 6EH, 49H, 58H 谁会去记具体的ASCII码,难记也难写。
  db 'foRk'
data ends

code segment
start: mov al, 'a'
			 mov bl, 'b'
			 mov ax, 4c00h
			 int 21h
cod ends

end start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值