python中unicode和unicodeescape
在python中,unicode是内存编码集,一般我们将数据存储到文件时,需要将数据先编码为其他编码集,比如utf-8、gbk等。
读取数据的时候再通过同样的编码集进行解码即可。
#python3
>>> s = '中国'
>>> a = s.encode()
>>> a
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> b = a.decode()
>>> b
'中国'
但是其实还有一种unicode-escape编码集,他是将unicode内存编码值直接存储:
#python3
>>> s = '中国'
>>> b = s.encode('unicode-escape')
>>> b
b'\\u4e2d\\u56fd'
>>> c = b.decode('unicode-escape')
>>> c
'中国'
拓展:还有一种string-escape编码集,在2中可以对字节流用string-escape进行编码
#python2
>>> s = '中国'
>>> a = s.decode('gbk')
>>> print a
中国
>>> b = s.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\python\python2.7\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd6 in position 0: invalid c
ontinuation byte
>>> c = s.decode('string-escape')
>>> print c
中国
chardet.detect()
使用chardet.detect()进行编码集检测时很多时候并不准确,比如中文过少时会识别成IBM855编码集:
#python3
>>> s = '中国'
>>> c = s.encode('gbk')
>>> chardet.detect(c)
{'encoding': 'IBM855', 'confidence': 0.7679697235616183, 'language': 'Russian'}
注:855 OEM 西里尔语 IBM855。
中文比较多时,还是准确的:
>>> s = '中国范文芳威风威风'
>>> c = s.encode('gbk')
>>> chardet.detect(c)
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
python中unicode和unicodeescape的更多相关文章
- Python中Unicode字符串
Python中Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte ...
- python中unicode和str的组合
python中unicode对象和str对象拼接在一起,会自动将str对象转换成unicode对象 即:a="aa" b=u"bb" c=a+b type(c) ...
- python中unicode, hex, bin之间的转换
python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...
- python中unicode、utf8、gbk等编码问题
转自:http://luchanghong.com/python/2012/07/06/python-encoding-with-unicode-and-gbk-and-utf8.html 概要:编码 ...
- python中unicode 和 str相互转化
python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]. 而python中的unicode对象应该才是等同于java中的S ...
- python中unicode utf-8的互换
比较简单明了,直接上例子 # -*- coding: utf-8 -*- t0 = u'测试' #u'\u6d4b\u8bd5' t1 = '测试' #'\xe6\xb5\x8b\xe8\xaf\x9 ...
- Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape
Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: t ...
- Python中读取txt文本出现:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决
windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 方式一:转义的方式 ...
- Python报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
运行python文件的时候报错: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2 ...
随机推荐
- TCP常用网络和木马使用端口对照表,常用和不常用端口一览表
[开始-运行- CMD , 输入 netstat -an 然后回车就可以查看端口] 端口: 服务:Reserved 说明:通常用于分析操作系统.这一方法能够工作是因为在一些系统中“”是无效端口,当你试 ...
- HDFS命令行工具
1. hadoop fs 帮助信息 hadoop fs 使用help选项可以获得某个具体命令的详细说明: hadoop fs -help ls 2. 列出HDFS文件和目录 hadoop fs -ls ...
- iOS:视图切换的第一种方式:模态窗口
一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...
- Nodejs安装使用,以及不错的Nodejs或者JS资料整理
先按照这个教程来学习:Node.js教程 - 菜鸟教程网 在mac上使用brew安装了nodejs,中间还是用到了先下载到cache目录的方法. 但是后来发现这样按照的node,没有安装npm. 找到 ...
- Django admin管理
admin的配置 admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理.默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功 ...
- CLS(公共语言规范)的CLSCompliant(跨语言调用)
.net的一个很重要的特性就是跨语言的编程,用C#写的dll可以在VB.net里调用,例如:用C#写的一个类,编译到dll中,然后在VB.net中调用: using System;namespace ...
- UIWebView页面的控制(二)
1.UIWebView的内容控制的属性/方法列表 loading属性 确认当前页面是否在读入中 canGoForward属性 确认goForward 方法是否可运行, ...
- Vc++内存布局
Vc++内存布局 测试平台 Windows server 2012 R2 and visual studio 2013 professional. 本篇文章意在介绍vc++中类的内存布局方式,只是研究 ...
- 转自http://bbs.linuxtone.org/thread-1062-1-1.html
详细参考:http://wiki.codemongers.com/NginxChsHttpMainModule worker_processes指明了nginx要开启的进程数,据官方说法,一般开一个就 ...
- zoj3662Math Magic
Math Magic Time Limit: 3 Seconds Memory Limit: 32768 KB Yesterday, my teacher taught us about ...