python decode unicode encode
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
代码中字符串的默认编码与代码文件本身的编码一致,以下是不一致的两种:
1. s = u'你好'
该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码(查看默认编码:import sys print('hello',sys.getdefaultencoding()) ascii 。设置默认编码:import sys reload(sys) sys.setdefaultencoding('utf-8')))无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可.
2. # -*- coding: utf-8 -*-
s = ‘你好’
此时为utf-8编码,ascii编码不能显示汉字
isinstance(s, unicode) #用来判断是否为unicode ,是返回True,不是返回False
unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为unicode编码
使用str.__class__可以查看str的编码形式
原理说了半天,最后来个包治百病的吧:)
#!/usr/bin/env python
#coding=utf-8
s="中文"
if isinstance(s, unicode):
#s=u"中文"
print s.encode('gb2312')
else:
#s="中文"
print s.decode('utf-8').encode('gb2312')
语音模块代码:
# -*- coding: utf-8 -*-import
import sys
print('hello',sys.getdefaultencoding())
def xfs_frame_info(words): #decode utf-8 to python internal unicode coding
isinstance(words,unicode)
wordu = words.decode('utf-8') #encode python unicode to gbk
data = wordu.encode('gbk') length = len(data) + 2 frame_info = bytearray(5)
frame_info[0] = 0xfd
frame_info[1] = (length >> 8)
frame_info[2] = (length & 0x00ff)
frame_info[3] = 0x01
frame_info[4] = 0x01 buf = frame_info + data
print("buf:",buf) return buf if __name__ == "__main__": print("hello world")
words1= u'你好'
#encodetype = isinstance(words1,unicode)
#print("encodetype",encodetype)
print("origin unicode", words1) words= words1.encode('utf-8')
print("utf-8 encoded", words)
a = xfs_frame_info(words)
print('a',a) if __name__ == "__main__": print("hello world")
words1= '你好'
print("oringe utf-8 encode:",words1)
encodetype = isinstance(words1,unicode)
wordu = words1.decode('utf-8')
print("unicode from utf-8 decode:",wordu)
#encodetype = isinstance(words1,utf-8)
#encodetype = isinstance(words1,'ascii')
#print("encodetype",encodetype)
#print("origin unicode", words1) word_utf8 = wordu.encode('utf-8')
#encodetype2 = isinstance(words,utf8)
#print("encodetype2",encodetype2)
print("utf-8 encoded",word_utf8)
a = xfs_frame_info(word_utf8)
print('a',a)
你好前不加u''时,要多一步decode为unicode
python decode unicode encode的更多相关文章
- Python decode与encode
字符串在Python内部的表示是unicode编码(8-bit string),因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicod ...
- 关于python decode()和 encode()
1.先收集一下这几天看到的关于decode()解码和encode()编码的用法 bytes和str是字节包和字符串,python3中会区分bytes和str,不会混用这两个.字符串可以编码成字节包,而 ...
- python decode和encode
摘抄: 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码 ...
- python encode decode unicode区别及用法
decode 解码 encode 转码 unicode是一种编码,具体可以百度搜 # coding: UTF-8 u = u'汉' print repr(u) # u'\u6c49' s = u.en ...
- Python字符串的encode与decode研究心得乱码问题解决方法
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式? 为什么会报错“UnicodeEncodeError: 'asc ...
- python字符decode与encode的问题
同事在工作中遇到一个字符编码的问题:问题是:从mysql数据库中读出来的varchar类型数据在python是unicode类型的. 但他却对这个unicode字符进行了decode,因为他以为读出来 ...
- Python字符串的encode与decode研究心得 乱码问题解决方法
以下摘自:http://www.jb51.net/article/17560.htm 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x ...
- Python字符串的encode与decode研究心得——解决乱码问题
转~Python字符串的encode与decode研究心得——解决乱码问题 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“/xe4/xb8/xad/xe6/x96/x8 ...
- 【Python】关于decode和encode
#-*-coding:utf-8 import sys ''' *首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将 ...
随机推荐
- 使用bat脚本调用py文件直接获取应用的包名和targetversion
背景: 在上一篇已经介绍过如何利用python调用aapt获取包名 https://www.cnblogs.com/reseelei-despair/p/11078750.html 但是因为每次都要修 ...
- js 两个数组对象根据账号比较去重,解决直接splice后数组索引改变
目的获取Arr2中不包含在arr1中的对象 根据Account进行比较,如果相等则删除tempArr数组对象. 结果返回张三 var arr1=[{"account":" ...
- linux or msys2设置网络代理
在文件 .bashrc 中添加 export http_proxy="proxy IP:port" 如 export http_proxy="192.168.0.1:80 ...
- shell脚本,一个shell的启动流程。
#一个shell的启动流程 #shell有一些变量,叫做环境变量,这些变量是可以继承的, #比如父shell有$UID,子shell也可以有,而且继承父shell的. #正常我们声明一个变量,a=,在 ...
- Lucene原理与代码分析
http://www.cnblogs.com/forfuture1978/category/300665.html
- CSS 文本下划线 text-decoration
定义和用法 text-decoration 属性规定添加到文本的修饰. 可能的值 值 描述 none 默认.定义标准的文本. underline 定义文本下的一条线. overline 定义文本上 ...
- redux form
纯粹使用react进行表单校验: class MyForm extends React.Component{ constructor(props){ super(props) this.onAddrC ...
- (转)uibutton边框颜色
UIButton *testButton = [UIButton buttonWithType:UIButtonTypeSystem]; [testButton setFrame:CGRectMake ...
- Makefile学习(一)----初步理解
一.我对makefile的理解: 经过一段时间对makefile的学习,我理解的makefile就是将程序员手动编译源文件的过程用一个脚本执行,这对于小型项目来说,程序员手动执行和用makefile来 ...
- PAT Basic 1042
1042 字符统计 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包 ...