鱼C论坛

 找回密码
 立即注册
查看: 3142|回复: 4

[已解决]IDLE环境中输出结果乱码问题求解答!

[复制链接]
发表于 2017-3-31 16:56:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 流浪马车 于 2017-3-31 16:56 编辑

现象:
  1. >>>
  2. #定义string
  3. string = (
  4. "我爱鱼C,\n"
  5. "正如我爱小甲鱼,\n"
  6. "他那呱唧呱唧的声音,\n"
  7. "总缠绕于我的脑海,\n"
  8. "久久不肯散去……\n")
  9. #直接用string输出
  10. >>> string
  11. '\xce\xd2\xb0\xae\xd3\xe3C\xa3\xac\n\xd5\xfd\xc8\xe7\xce\xd2\xb0\xae\xd0\xa1\xbc\xd7\xd3\xe3\xa3\xac\n\xcb\xfb\xc4\xc7\xdf\xc9\xdf\xf3\xdf\xc9\xdf\xf3\xb5\xc4\xc9\xf9\xd2\xf4\xa3\xac\n\xd7\xdc\xb2\xf8\xc8\xc6\xd3\xda\xce\xd2\xb5\xc4\xc4\xd4\xba\xa3\xa3\xac\n\xbe\xc3\xbe\xc3\xb2\xbb\xbf\xcf\xc9\xa2\xc8\xa5\xa1\xad\xa1\xad\n'
  12. #用print输出
  13. >>> print(string)
  14. 我爱鱼C,
  15. 正如我爱小甲鱼,
  16. 他那呱唧呱唧的声音,
  17. 总缠绕于我的脑海,
  18. 久久不肯散去……
复制代码


问题:针对以上现象为何会这样?print(string)和string输出的方式有什么区别?string输出为何会打出那个长串串的东西?如果不用print输出是否有方法?
最佳答案
2017-3-31 17:15:18
在交互模式直接用变量名是repr模式的输出,所以输出的是字符串的编码。要解决这个问题很简单,把python换成3.x版本。

问题截图

问题截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-31 17:15:18 | 显示全部楼层    本楼为最佳答案   
在交互模式直接用变量名是repr模式的输出,所以输出的是字符串的编码。要解决这个问题很简单,把python换成3.x版本。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-31 17:15:37 | 显示全部楼层
你用的是python2环境吧,python2是初始编码是不支持中文的
http://www.runoob.com/python/python-chinese-encoding.html
参考下这个修改你的编码就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-31 18:08:38 | 显示全部楼层
lumber2388779 发表于 2017-3-31 17:15
你用的是python2环境吧,python2是初始编码是不支持中文的
http://www.runoob.com/python/python-chinese- ...

是python2的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 09:55:15 | 显示全部楼层
大家可以参照这位博友写的(
  1. http://bbs.fishc.com/thread-56065-1-1.html
复制代码
),很详细,其中有段代码我改了一下,这样我觉得会更适合各类情况:
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. '''
  4. #字符串的encode与decode解决乱码问题
  5. #decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
  6. #encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编
  7. #字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码
  8. #,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
  9. '''
  10. def strEncodeAndDecode(string):
  11.     if isinstance(s, unicode): #判断是否是unicode
  12.     #s=u"中文"
  13.         print s.encode('gb2312') #如果是unicode,将unicode编码转换成其他编码的字符串
  14.     else:
  15.     #s="中文"
  16.         print s.decode('utf-8').encode('gb2312')#如果不是unicode,将其他编码的字符串转换成unicode编码,然后在转换成其他编码的字符串
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 13:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表