Python怎么把ansi编码的文本转换为 unicode的文字?

Python011

Python怎么把ansi编码的文本转换为 unicode的文字?,第1张

1.弄清楚,当前ansi的编码是啥,比如是gbk

2。然后通过

decodedUnicodeStr = ansiGbkStr.decode("GBK")

就可以把ansiGbkStr解码为对应的unicode字符了。

相关背景知识,可参考:

crifan 字符编码详解

(这里不给贴地址,所以请自己用google搜标题,即可找到帖子地址)

我昨天遇到一个疑惑,使用python读入中文,然后print读入的文本,却显示为乱码。

os.chdir("C:/Users/v_chjwang/Desktop/weibosent/SentiAnalysis_local")

file = open("./test2.txt", 'r')

def read_file(file_name):

txt = []

for i in file_name:

line = i.split(',')[0]

txt.append(line)

return txt

txt = read_file(file)

>>>txt[1]

'\xe8\xbf\x99\xe9\x83\xa8\xe6\x89\x8b\xe6\x9c\xba\xe5\xbe\x88\xe4\xb8\x8d\xe9\x94\x99\xe3\x80\x82\n'

>>>print txt[1]

杩欓儴镓嬫満寰堜笉阌欍€

我想一定是我的encoding没有设置好,python是偏爱unicode的,我还是先声明一些基础的东西吧。尝试指定软件型号、编码方式、使用sys设置预定的encoding,如下:

#! /usr/bin/env python2.7

# -*- coding:utf-8-*-

#coding=utf-8

import os

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

结果还是不行。错误依旧。

到底是怎么回事呢?我尝试着将文本的encoding由utf-8改成ANSI,结果就正确了。如下效果:

>>>txt[1]

'\xd5\xe2\xb2\xbf\xca\xd6\xbb\xfa\xba\xdc\xb2\xbb\xb4\xed\xa1\xa3\n'

>>>print txt[1]

这部手机很不错。

程序:===================

a = '中文'

b = u'中文'

print a, type(a)

print b, type(b)

print a.decode('gbk')

--------------------------------------

文件格式ansi

#coding=gbk

输出:

中文

中文

中文 ( print a.decode('gbk') )

--------------------------------------

文件格式utf8带bom

输出:

涓 枃

中文

中文 ( print a.decode('utf8') )

--------------------------------------

他的结论也是说:所以感觉还是用#coding=gbk的ansi格式的存储比较好。

一般来说读出来的字符串,所以要"我".decode("ascii").encode("utf-8")

如果还不行,就结合下面这段代码试试,编码可以换换,反正我最近就是这样解决的

import sys

reload(sys)

sys.setdefaultencoding('utf8')