python编码转换在线_新手问关于中文编码转换问题 -- 如何从gb2312 转换回 utf-8

介绍一:

首先,我们要了解,哪些字符是utf8!

从严格意义上讲,所有字符均为utf8编码,包括中文、英文、符号!

注意,英文也是utf8编码的!!

如下面这些都是utf8编码的:

'a' , 'abc' , '_编程_' , '2008'

'beijing2008'

但是,有时候我们需要通用编码:unicode!

unicode是国际常用通用编码!

要将上面那些转为unicode编码,只需在字符串后加个.decode('utf8')

意思是将字符串原为utf8,反编为unicode

'abc'.decode('utf8')

意思是将'abc'从utf8编码转为unicode编码!

需要说明的是:

英文和数字型字符串能够强制从任意编码转为unicode,因此可写成u'abc',这样就代表了unicode码!因为英文的任意编码是相同的!

其次,要了解混合编码的问题:

如:

'abc'+u'abc'

这是由utf8编码加上unicode编码!

结果从严格意义上讲是unicode编码!但有些函数传递字符串时会强制转化。

最后!

那什么时候用utf8,什么时候用unicode?

没有明确说法,要看函数、模块是要什么编码的!

以下是常用要utf8编码的:

open()打开文件

os模块下的大多数函数

解释:

open('d:\\测试.txt','w')是正确的

open('d:\\测试.txt'.decode('utf8'),'w')就会异常

os模块下有一些也是要传递变量的,如

os.path.isfile(路径)判断路径是否为文件。这里的路径也要utf8的。

用unicode编码的,最常用的是appuifw模块!

appuifw.app.menu菜单

appuifw.app.title标题

appuifw.Text()文本窗口

好了,看个例子:

import powlite_fm

path=powlite_fm.manager().AskUser()

path=path.encode('utf8')

file=open(path)

get=file.read()

file.close()

注意:path=path.encode('utf8')这句是将path从unicode编译成utf8编码!

powlite_fm模块的返回值(path)是unicode编码的!

但是,后面的open却需要utf8编码的,因此需要将path从unicode编译成utf8编码!

这就是所谓的不支持中文路径的原因!

介绍二:

中文是utf8编码的,要显示出中文,在文本窗口和提示框都是用unicode编码,就要将utf8转化为unicode,因此,要显示中文“你好”,就得用decode('utf8')

print u'hello'

print '你好'.decode('utf8')

import appuifw

appuifw.note(u'hello')

appuifw.note('你好'.decode('utf8'))

例:将“你好China2008”以u码保存在d:\a.txt:

不知为何,别人说u码是unicode码,而python里不能以unicode保存,而用utf16保存却是u码。具体原因不知,知道的说下!

txt='你好China2008'.decode('utf8').encode('UTF-16')

file=open('d:\\a.txt','w')

file.write(txt)

file.close()

例:将“China2008”以A码保存在d:\a.txt:

不知为何,A码不能保存中文,知道方法的说下!

txt='China2008'.decode('utf8').encode('ascii')

file=open('d:\\a.txt','w')

file.write(txt)

file.close()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值