python字符串编码测试

#encoding=utf8
import chardet

def str_detect(str):
    try:
        print ":".join("{:02x}".format(ord(c)) for c in str)
        t = chardet.detect(str)
        print t
        if t['encoding']=="utf-8":
            print str
    except:
        print type(str)
        pass
    print ""

def enc(str, enc):
    try:
        s = str.encode(enc)
        str_detect(s)
    except:
        print "ERR:encode"
     
def dec(str, enc):
    try:
        s = str.decode(enc)
        str_detect(s)
    except:
        print "ERR:decode"
        pass

print "============================="
cn = "中文"
str_detect(cn)

cn1 = u"中文1"
str_detect(cn1)

enc(cn1, 'utf-8')
enc(cn1, 'utf-16')
enc(cn1, 'gb2312')
enc(cn1, "ISO-8859-1")


cn2 = "中文2"
str_detect(cn2)

dec(cn2, 'utf-8')
dec(cn1, 'utf-16')
dec(cn1, 'gb2312')
dec(cn1, "ISO-8859-1")

cn3 = "中文3"
dec_str = cn3.decode('utf-8')
str_detect(dec_str)
enc_str = dec_str.encode('utf-16')
str_detect(enc_str)
end_str = enc_str.decode('utf-16')
str_detect(end_str)

# str利用decode方法根据str的编码将其解码为unicode字符串类型
# str利用encode根据特定的编码将unicode字符串类型转换为特定的编码
# 注:系统不一样结果会不同

结果:

=============================
e4:b8:ad:e6:96:87
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
中文

4e2d:6587:31
<type 'unicode'>

e4:b8:ad:e6:96:87:31
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
中文1

ff:fe:2d:4e:87:65:31:00
{'confidence': 1.0, 'language': '', 'encoding': 'UTF-16'}

d6:d0:ce:c4:31
{'confidence': 0.682639754276994, 'language': 'Russian', 'encoding': 'KOI8-R'}

ERR:encode
e4:b8:ad:e6:96:87:32
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
中文2

4e2d:6587:32
<type 'unicode'>

ERR:decode
ERR:decode
ERR:decode
4e2d:6587:33
<type 'unicode'>

ff:fe:2d:4e:87:65:33:00
{'confidence': 1.0, 'language': '', 'encoding': 'UTF-16'}

4e2d:6587:33
<type 'unicode'>



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值