字符串在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 gbkdata = wordu.encode('gbk')length = len(data) + 2frame_info = bytearray(5)frame_info[0] = 0xfdframe_info[1] = (length >> 8)frame_info[2] = (length & 0x00ff)frame_info[3] = 0x01frame_info[4] = 0x01buf = frame_info + dataprint("buf:",buf)return bufif __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

转载于:https://www.cnblogs.com/cj2014/p/4236114.html

python decode unicode encode相关推荐

  1. Python JSON decode和encode

    Python: Decode和Encode JSON import json, dumps encode数据,loads decode数据. def DecodingJson(json_file):d ...

  2. python跟unicode一样吗_PYTHON编码处理-str与Unicode的区别

    一篇关于STR和UNICODE的好文章 整理下python编码相关的内容 注意: 以下讨论为Python2.x版本, Py3k的待尝试 开始 用python处理中文时,读取文件或消息,http参数等等 ...

  3. python中decode和encode的区别

    首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将其他编码的字符串解码(decode)成unicode,再从unic ...

  4. Python字符串的encode与decode研究心得乱码问题解决方法

    Python字符串的encode与decode研究心得乱码问题解决方法 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成"\xe4\xb8\xad\xe6\x96 ...

  5. python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)

    一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...

  6. Python字符串的encode与decode 解决乱码问题

    为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成"/xe4/xb8/xad/xe6/x96/x87"的形式?为什么会报错"UnicodeEnc ...

  7. python中文decode和encode转码

    字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...

  8. Python解决抓取内容乱码问题(decode和encode解码)

    一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...

  9. python程序采用unicode编码、英文字符,Python 与 Unicode

    unicode 与 utf8 的关系 unicode 定义了统一的字符集, UTF8 则是一种编码 unicode 字符集的方式. 在 python2 中, str 类型, unicode 类型都是  ...

最新文章

  1. matlab ia模块,MathWorks发布MATLAB和SimulinkR2020a版本,为工程师和科学家提供更多AI功能...
  2. 转换Word文档为PDF文件
  3. 【Linux入门连载二】Linux系统有哪些基本目录?
  4. 机器学习Sklearn实战——决策树算法
  5. H2内嵌数据库的使用
  6. TCP与UDP网络编程总结(一)
  7. 学习第六天@Linq操作
  8. 【干货】史上最全个性化推荐技术资料包(附50余份技术文档下载链接)
  9. centos 7 163 yum 源 python 2.7.5
  10. 谷歌浏览器插件(jsonview)的下载与安装
  11. ECharts地图省会,城市,县坐标
  12. URI与URL的区别
  13. html将网页保存成图片,谷歌浏览器保存网页为图片方法_chrome如何将网页保存为图片-win7之家...
  14. VTK系列教程九:VR图像裁剪
  15. 这个寒冷的冬天 是谁的机会?
  16. 双击启动PS软件界面不显示、PS无法打开,解决方法
  17. h5应用数据加密_H5+应用打包JS没有加密混淆
  18. nexus代理阿里云仓库gradle仓库
  19. 【仿写酷界面】【HenCoder】仿小米运动的运动记录界面
  20. java集成paypal支付,含Android,服务端代码

热门文章

  1. python不同模块间传递数据_Python模块-数据传送模块
  2. python在金融工程领域包括_金融工程专业对计算机的能力要求到底是什么?
  3. java lambda例子_Java lambda 表达式常用示例
  4. serverless搭建html,基于ServerLess的极简网页计数器:源码分析与实践
  5. 第三章计算机试题,计算机等级考试二级VB测试题(第三章)
  6. 计算机网络子网划分路由配置实验报告,洛阳理工学院+计算机网络+实验5子网划分路由配置...
  7. ue4 怎么修改骨骼动画_【UE4】动画重定向
  8. 2纳米芯片问世!芯片性能要起飞?!
  9. 40岁“老程序员”的“辛酸”自述:
  10. 为什么PCB板通常是绿色的?