python3使用中文的问题

zuoyexingchen 2014-11-05 04:25:22
只是简单处理qq显示名称,发现python3无法处理一部分gbk中文
如:b'\xfe\x5d' 怎么都无法处理,最后只能换perl
现在网上有一堆这样脑残字,ptyhon怎么处理啊?大家有没有好的办法?
...全文
411 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoyexingchen 2014-11-07
  • 打赏
  • 举报
回复
对于python3.x读取这种生僻字问题不大,最大的问题在于print函数,windows下print使用系统环境的cp936编码,调用print函数会直接报错! 当然使用我写的方法是可以正常的输出到屏幕,但是这样需要覆盖python的print函数,感觉这么不是很完美,不知道大家有没有更好的方法。
The_Third_Wave 2014-11-06
  • 打赏
  • 举报
回复
BOM,文件首会有,处理文件首行。也就是第一行去掉这个BOM。
zuoyexingchen 2014-11-06
  • 打赏
  • 举报
回复
这样解决仍然存在问题,大家有没有让print函数直接显示gb18030编码中生僻字?
zuoyexingchen 2014-11-06
  • 打赏
  • 举报
回复
我用的是python 3.X 楼上说的方法不管用,经过我查找资料测试摸索,读写文件都不存在问题,只要open文件的时候使用encoding='gb18030'参数就可以了。 最大的问题是调用print输出到标准输出端时会报错: UnicodeEncodeError: 'gbk' codec can't encode character '\u2e8c' in position 0: i llegal multibyte sequence 使用sys.stdout = codecs.getwriter('gb18030')(sys.stdout)后调用print会报: TypeError: must be str, not bytes 简直晕死了。在网上查找了半天如下代码可以正常显示:

#!/usr/bin/python
# coding: gbk

import sys
import codecs

stdout = codecs.getwriter('gb18030')(sys.stdout)

readfile = sys.argv[1]

for line in open(readfile,'r',encoding='gb18030'):
	s = line.strip()
	stdout.buffer.write(s.encode('gb18030'))
zd96998 2014-11-05
  • 打赏
  • 举报
回复
1、文章开头 #! /usr/bin/env python #coding=utf-8 2、import sys reload(sys) sys.setdefaultencoding('gbk') 3、decode

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧