关于python的编码问题---快哭了。。。内含代码

u010955353 2014-02-26 10:35:54
代码:
def insert_word() :
word=raw_input("请输入您想添加的单词 : ")
s_word=word.lower()
dic={}
first_char=word[0]
word_url=first_char+'.txt'
f=open(word_url,'r')
for line in f.readlines():
s=line.split()
value=''
for str in s[1:] :
value=value+str+','
dic[s[0]]=value
if dic.has_key(word):
print "already had!"
else :
dic[word]=raw_input("请输入"+word+"的解释 :")
sorted(dic)
out=open(word_url,'w')
for key in dic :
out.write(key)
out.write('\t\t\t\t\t')
key2=dic[key].encode('GB2312')
out.write('\t'.join(key2))
out.write('\n')
out.close()

请问读入文本中的中文总是乱码怎么解决啊啊啊啊!!!!!快哭了。。。。搜了各种豆木有结果。。。
...全文
1305 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
大脸猫o 2014-03-13
  • 打赏
  • 举报
回复
引用 楼主 u010955353 的回复:
代码: def insert_word() : word=raw_input("请输入您想添加的单词 : ") s_word=word.lower() dic={} first_char=word[0] word_url=first_char+'.txt' f=open(word_url,'r') for line in f.readlines(): s=line.split() value='' for str in s[1:] : value=value+str+',' dic[s[0]]=value if dic.has_key(word): print "already had!" else : dic[word]=raw_input("请输入"+word+"的解释 :") sorted(dic) out=open(word_url,'w') for key in dic : out.write(key) out.write('\t\t\t\t\t') key2=dic[key].encode('GB2312') out.write('\t'.join(key2)) out.write('\n') out.close() 请问读入文本中的中文总是乱码怎么解决啊啊啊啊!!!!!快哭了。。。。搜了各种豆木有结果。。。
开始时候声明所用编码 #coding=utf-8
ImN1 2014-03-04
  • 打赏
  • 举报
回复
引用 16 楼 jeky198306 的回复:
[quote=引用 15 楼 snmr_com 的回复:] [quote=引用 13 楼 jeky198306 的回复:] 你好,我有个疑问,在python cmd, ipython中,系统编码默认是ascii,问什么中文在里面不转换也能正常显示?难道这里的环境能自动识别编码么?
那要看看font是什么,如果是中文字体也能显示,显示编码和计算编码是两件事[/quote] 在网上看了下,中文编码是扩展了ascii编码,请问这里涉及计算编码么?[/quote] 这样说是还没理解,中文编码不是一种编码,GBK/BIG5都是中文编码,都是ASCII扩展,但两者就互为乱码 其实这样说几乎所有变长编码都是ASCII扩展的 >>> '榎'.encode('gb2312').decode('gbk') Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> '榎'.encode('gb2312').decode('gbk') UnicodeEncodeError: 'gb2312' codec can't encode character '\u698e' in position 0: illegal multibyte sequence >>> '榎'.encode('gbk').decode('gbk') '榎' >>> '榎'.encode('gbk').decode('gb2312') Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> '榎'.encode('gbk').decode('gb2312') UnicodeDecodeError: 'gb2312' codec can't decode byte 0x98 in position 0: illegal multibyte sequence 看到了吧,'榎'用gb2312显示没问题,只要字体支持就行,但转换就有问题了,这个就是“显示”和计算的区别
darkread 2014-03-04
  • 打赏
  • 举报
回复
脚本顶端加 #coding:utf-8 字符串之前加u,表示unicode a=u"我是中文" 另外,请确保你的txt文档的编码,是GB2312还是UTF-8 而且,请考虑你的系统xp下面,命令行默认是GB2312的,不是默认UTF-8
ImN1 2014-03-03
  • 打赏
  • 举报
回复
引用 13 楼 jeky198306 的回复:
你好,我有个疑问,在python cmd, ipython中,系统编码默认是ascii,问什么中文在里面不转换也能正常显示?难道这里的环境能自动识别编码么?
那要看看font是什么,如果是中文字体也能显示,显示编码和计算编码是两件事
jeky_zhang2013 2014-03-03
  • 打赏
  • 举报
回复
引用 15 楼 snmr_com 的回复:
[quote=引用 13 楼 jeky198306 的回复:] 你好,我有个疑问,在python cmd, ipython中,系统编码默认是ascii,问什么中文在里面不转换也能正常显示?难道这里的环境能自动识别编码么?
那要看看font是什么,如果是中文字体也能显示,显示编码和计算编码是两件事[/quote] 在网上看了下,中文编码是扩展了ascii编码,请问这里涉及计算编码么?
darkread 2014-03-02
  • 打赏
  • 举报
回复
这里分很多因素 我假定你用的是linux,命令行模式(终端) 那么,源文件:#coding:utf-8 终端调整为UTF-8编码 系统调整问UTF-8编码 系统字体调整为中文字体,不知道可以安装文泉驿中文字体。 你用SecureCRT SSH连接服务器,那么请调整SecureCRT的会话选项->显示 编码为UTF-8,字体为中文字体,默认GB2312
jeky_zhang2013 2014-03-02
  • 打赏
  • 举报
回复
首先检查环境,脚本和读写环境的编码,转码前清楚知道目前的编码是什么, encode是将原来是unicode的字符转为你想要设置的编码字节,decode是将现有的编码字节转成unicode字符
jeky_zhang2013 2014-03-02
  • 打赏
  • 举报
回复
你好,我有个疑问,在python cmd, ipython中,系统编码默认是ascii,问什么中文在里面不转换也能正常显示?难道这里的环境能自动识别编码么?
引用 4 楼 snmr_com 的回复:
open(fd, 'r', encoding='...'),省略encoding,默认是'ASCII' 编码问题记住一个原则就可以了——每次IO前后保持编码一致 1.打开运行环境,这就是一次IO,Python Shell/IDE/CMD……等等,这个环境的编码要搞清楚,跟系统编码不是一个概念 2.打开脚本文件,如果涉及在环境直接输出,如 CLI,脚本文件保存的编码理应和运行环境相同,GUI 则不同 3.运行脚本文件,期间产生的IO,如input/读写文件/读写数据库……等等 4.转码前后 …… 另外是搞清一些编码概念 1.编程不同写网页,一般不要用GB2312,而应该用GBK。因为gb2312汉字范围很小,写网页因为只是显示,客户端的字体能显示的字符足够多就可以了,超出范围的也能显示;但编程就不同了,跟字体没啥关系,而是编码转换,那超出范围的字符就会转换错误 2.同理是ASCII 和 latin-1 3.unicode是个字符集概念,不是编码,而utf-8/utf-16/uc2/uc4……才是
u010955353 2014-03-01
  • 打赏
  • 举报
回复
# -*- coding: utf-8 -*-我有的。。。但是还是没用。。。会乱码。。。。
u010955353 2014-03-01
  • 打赏
  • 举报
回复
5楼 说的系统啥意思??什么中文系统英文系统啊??我是想做个英汉字典啊。。。。。
u010955353 2014-03-01
  • 打赏
  • 举报
回复
这添加那种环境变量时什么原理??
angel_su 2014-03-01
  • 打赏
  • 举报
回复
raw_input你是用python 2的吧,key2=dic[key].encode('GB2312')这句有问题...
iasky 2014-03-01
  • 打赏
  • 举报
回复
把文件的编码也修改下,保存为utf-8的
smhui_007 2014-02-28
  • 打赏
  • 举报
回复
修改操作系统的环境变量也可以吧。 LANG=zh_CN.GBK
ImN1 2014-02-27
  • 打赏
  • 举报
回复
open(fd, 'r', encoding='...'),省略encoding,默认是'ASCII' 编码问题记住一个原则就可以了——每次IO前后保持编码一致 1.打开运行环境,这就是一次IO,Python Shell/IDE/CMD……等等,这个环境的编码要搞清楚,跟系统编码不是一个概念 2.打开脚本文件,如果涉及在环境直接输出,如 CLI,脚本文件保存的编码理应和运行环境相同,GUI 则不同 3.运行脚本文件,期间产生的IO,如input/读写文件/读写数据库……等等 4.转码前后 …… 另外是搞清一些编码概念 1.编程不同写网页,一般不要用GB2312,而应该用GBK。因为gb2312汉字范围很小,写网页因为只是显示,客户端的字体能显示的字符足够多就可以了,超出范围的也能显示;但编程就不同了,跟字体没啥关系,而是编码转换,那超出范围的字符就会转换错误 2.同理是ASCII 和 latin-1 3.unicode是个字符集概念,不是编码,而utf-8/utf-16/uc2/uc4……才是
手无护鸡之力 2014-02-27
  • 打赏
  • 举报
回复
引用 1 楼 insisted_search 的回复:
汗,要加个文件头定义。 在文件的第一行加“# -*- coding: utf-8 -*-”
这个是不是分系统啊?我英文系统,加了也不行
公子烨 2014-02-27
  • 打赏
  • 举报
回复
楼上正解,你需要设置文件为utf-8格式
guzl86 2014-02-27
  • 打赏
  • 举报
回复
推荐: http://www.cnblogs.com/sislcb/archive/2008/11/26/1341453.html 还有,无聊说一句。 楼主装逼,要是用英文系统,你代码里面的注释和打印可以也用英文。人家系统默认你是英文使用者了,你干嘛用中文输出呢?要是有中文输入输出你就用中文系统。
guzl86 2014-02-26
  • 打赏
  • 举报
回复
汗,要加个文件头定义。 在文件的第一行加“# -*- coding: utf-8 -*-”

37,721

社区成员

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

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