|||
Ubantu乌班图python2.7 处理的文本,以及脚本中的 中文 的解码
##########################################################################
在linux中(乌班图)中,python2.7在处理中文文本,并且脚本中含有中文时
1, 在脚本的首行加
# -*- coding: UTF-8 -*-
2, python在读入中文时,将文字读成 gbk 格式。但出现在脚本里的汉字,是别的格式(UTF-8 ??)。
3, 比对 脚本中的中文 与 从文件中读取的中文 时,需要将两者转换成相同的编码格式。
比如:
变量 X 是从文本里独到的文字 “彪”
脚本里如果写成
if X == '彪':
是不成的。正确的方法是:
if X.strip() == '彪'.decode('utf-8').encode('gbk'):
strip()是为了去除\r\t\n等汉字之外的东西。
'彪'.decode('utf-8').encode('gbk'),是将 脚本里出现的 ‘彪’ 字,改成了 gbk 编码。
###########################################################################
#########################################################
此外,如果linux终端显示中文为乱码,在终端的视窗的菜单里,找encoding,改成中文简体。
#########################################################
>>> a = '好'
>>> type(a)
<type 'str'>
>>> b = a.decode('utf-8')
>>> type(b)
<type 'unicode'>
>>> c = a.decode('utf-8').encode('utf-8')
>>> type(c)
<type 'str'>
>>> print(a)
好
>>> print(b)
好
>>> print(c)
好
>>> a
'\xe5\xa5\xbd'
>>> b
u'\u597d'
>>> c
'\xe5\xa5\xbd'
>>> d = a.decode('utf-8').encode('GB2312')
>>> type(d)
<type 'str'>
>>> d
'\xba\xc3'
>>> print(d)
��
>>> e = b.decode('utf-8').encode('GB2312')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u597d' in position 0: ordinal not in range(128)
>>>
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-5 11:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社