【发布时间】:2009-12-22 17:16:50
【问题描述】:
我应该如何在Python中毫无例外地写“mąka”?
我试过var= u"mąka" 和var= unicode("mąka") 等...没有任何帮助
我在文档的第一行有编码定义,但我仍然有这个例外:
'utf8' 编解码器无法解码位置 0 中的字节 0xb1:意外的代码字节
【问题讨论】:
我应该如何在Python中毫无例外地写“mąka”?
我试过var= u"mąka" 和var= unicode("mąka") 等...没有任何帮助
我在文档的第一行有编码定义,但我仍然有这个例外:
'utf8' 编解码器无法解码位置 0 中的字节 0xb1:意外的代码字节
【问题讨论】:
将以下两行保存到write_mako.py:
# -*- encoding: utf-8 -*-
open(u"mąka.txt", 'w').write("mąka\n")
运行:
$ python write_mako.py
应在当前目录中创建包含单词mąka 的mąka.txt 文件。
如果它不起作用,那么您可以使用chardet 来检测文件的实际编码(请参阅chardet example usage):
import chardet
print chardet.detect(open('write_mako.py', 'rb').read())
在我的情况下,它会打印:
{'confidence': 0.75249999999999995, 'encoding': 'utf-8'}
【讨论】:
-*- encoding: '行的编码不匹配。
print repr(open("my_tiny_script.py", "rb).read()) 的结果,我们很快就能解决他的问题。如果他能告诉我们他在什么操作系统上使用哪个编辑器也会有所帮助。
# -- coding: -- 行必须指定保存源文件的编码。此错误消息:
'utf8' codec can't decode byte 0xb1 in position 0: unexpected code byte
表示您没有以 UTF-8 格式保存源文件。您可以将源文件保存为支持您在源代码中使用的字符的任何编码,只要确保您知道它是什么并且有适当的编码行。
【讨论】:
sys.getdefaultencoding() 值
你遇到了什么异常?
您可以尝试将源代码文件保存为 UTF-8,并将其放在文件顶部:
# coding=utf-8
这告诉 Python 文件保存为 UTF-8。
【讨论】:
此代码适用于我,将文件保存为 UTF-8:
v = u"mąka"
print repr(v)
我得到的输出是:
u'm\u0105ka'
请复制并粘贴您遇到的确切错误。如果您收到此错误:
UnicodeEncodeError: 'charmap' codec can't encode character ... in position ...: character maps to <undefined>
然后您尝试在不支持 UTF-8 的地方输出字符(例如,您的 shell 的字符编码设置为 UTF-8 以外的其他字符)。
【讨论】: