#!/bin/env python
#-*- encoding=utf8 -*-
# 文件头指定utf8编码还是乱码时,使用下面方式指定 # fix encoding problem
import sys
reload(sys)
sys.setdefaultencoding('utf8') # 设置编码
sys.getdefaultencoding() # 获取编码 ------------------------------------------------------- sys.path.append('../') # 设置路径
 #coding=utf-8

 s='中文'
if(isinstance(s, str)):
#s为u'中文'
s.encode('gb2312')
else:
#s为'中文'
s.decode('utf8').encode('gb2312')

python 内部使用unicode表示字符串,自然当需要编码转换时,要用unicode作为中间“中间编码”,

eg:

gbk转utf-8时,

  gbk --> unicode --> utf-8

分解为两个步骤:

1. gbk --> unicode

python语法:字符串.decode('gbk')

2. unicode --> utf-8

python语法: 字符串.decode('gbk').encode('utf-8')

对于已经是Unicode编码的字符串,可以直接encode,而不能decode了。这种情况下,需要代码给出判断,

可以使用python __builtin__.py中提供的函数:isinstance() 去判断python范围内的任何“类型”,当然也

可以判断是不是unicode:

if isinstance(yourchar, unicode):

communicate = yourchar.encode('utf-8')   #直接编码成utf-8格式

else :

# 此处没有进行过测试,如果出错可以直接使用: communicate = yourchar.decode('你当前的编码类型', errors='ignore').encode('utf-8')

import chardet    # chardet.detect 可以试探字符串类型,估计是某种字符的概率

type_decode = chardet.detect(yourchar)['encoding']

communicate = yourchar.decode(type_decode, errors='ignore').encode('utf-8')

   errors:

        因为unicode 只有128那么长,所以为了“容错”,这里有3个级别,

        errors='strict'   # 很严格,出错(多于128)就异常

        errors='replace'   # add U+FFFD,  'REPLACEMENT CHARACTER'

    errors = 'ignore'   # 用短的替换

python 字符编码 转换的更多相关文章

  1. Python—字符编码转换、函数基本操作

    字符编码转换 函数 #声明文件编码,格式如下: #-*- coding:utf-8 -*- 注意此处只是声明了文件编码格式,python的默认编码还是unicode 字符编码转换: import sy ...

  2. day4学python 字符编码转换+元组概念

    字符编码转换+元组概念 字符编码转换 #coding:gbk //此处必声明 文件编码(看右下角编码格式) #用来得到python默认编码 import sys print(sys.getdefaul ...

  3. python字符编码转换说明及深浅copy介绍

    编码说明: 常用编码介绍: ascii 数字,字母 特殊字符. 字节:8位表示一个字节. 字符:是你看到的内容的最小组成单位. abc : a 一个字符. 中国:中 一个字符. a : 0000 10 ...

  4. Python字符编码转换

    编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有一天它会猝不及防坑你一把.不过感觉这哥们的答案并没把编码问题写 ...

  5. python字符编码(二)

    一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...

  6. 深入理解Python字符编码--转

    http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...

  7. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

  8. Learning-Python【8】:Python字符编码

    1.内存和硬盘都是用来存储的 内存:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的 ...

  9. 关于Python字符编码encode和decode

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...

随机推荐

  1. Lab_6_SysOps_AutoScaling_Linux_v2.5

    System Operations - Lab 6: Using Amazon Elastic Load Balancer (Linux) - 2.5 ======================== ...

  2. Spark Job的提交与task本地化分析(源码阅读八)

    我们又都知道,Spark中任务的处理也要考虑数据的本地性(locality),Spark目前支持PROCESS_LOCAL(本地进程).NODE_LOCAL(本地节点).NODE_PREF.RACK_ ...

  3. XML编程知识点总结

    DOM和SAX DOM的全称是Document Object Model,也即文档对象模型.基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合,应用程序挣是通过对这个对象模型的操作,来实 ...

  4. 使用Spring+Junit4.4进行测试(使用注解)

    http://nottiansyf.iteye.com/blog/345819 使用Junit4.4测试 在类上的配置Annotation @RunWith(SpringJUnit4ClassRunn ...

  5. Java 多张图片合成一张 drawImage

      package com.yunfengtech.solution.business; import java.awt.Color; import java.awt.Graphics; import ...

  6. C# 系统错误日志处理类

    编写软件,难免会有一些异常,针对异常我们在实际的开发中相比都有一些,捕获异常的处理办法.把软件运行错误信息写成一个 错误日志文件很有必要.当我们在客户那边安装调试时就会更加快捷的,知道错误在哪里.否则 ...

  7. Android性能优化典范

    来源:http://hukai.me/android-performance-patterns/#jtss-tsina 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主 ...

  8. OpenLayers 3 基础知识(一)

    OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问. 要在你的网页中使用OpenLayers(现用版本:v3.19,1), ...

  9. hibernate配置文件hibernate.cfg.xml的详细解释

    <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式-->                 <?x ...

  10. 用 javascript 脚本,网站判读来访者是手机还是电脑

    <script> var system ={}; var p = navigator.platform; system.win = p.indexOf("Win") = ...