在文本处理的时候,经常会遇到全角半角不一致的问题。于是需要程序能够快速的在两者之间互转。
由于全角半角本身存在着映射关系,所以处理起来并不复杂。具体规则为:
- 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
- 半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
- 空格比较特殊,全角为 12288(0x3000),半角为 32(0x20)
- 而且除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 + 65248 = 全角)
所以可以直接通过用+-法来处理非空格数据,对空格单独处理。
用到的一些函数
- chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
- unichr()跟它一样,只不过返回的是Unicode字符。
- ord()函数是chr()函数或unichr()函数的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。
先来打印下映射关系:
for i in xrange(33,127):
print i,chr(i),i+65248,unichr(i+65248
全角半角与常见编码格式(ASCll、ANSI、GB2312、GBK、Unicode、UTF-8/UTF-16)总结_ria_zhou的博客-CSDN博客_全角字符的ascii码