【问题标题】:Diacritic signs变音符号
【发布时间】:2009-12-22 17:16:50
【问题描述】:

我应该如何在Python中毫无例外地写“mąka”?

我试过var= u"mąka"var= unicode("mąka") 等...没有任何帮助

我在文档的第一行有编码定义,但我仍然有这个例外:

'utf8' 编解码器无法解码位置 0 中的字节 0xb1:意外的代码字节

【问题讨论】:

    标签: python django unicode


    【解决方案1】:

    将以下两行保存到write_mako.py

    # -*- encoding: utf-8 -*-
    open(u"mąka.txt", 'w').write("mąka\n")
    

    运行:

    $ python write_mako.py
    

    应在当前目录中创建包含单词mąkamąka.txt 文件。

    如果它不起作用,那么您可以使用chardet 来检测文件的实际编码(请参阅chardet example usage):

    import chardet
    
    print chardet.detect(open('write_mako.py', 'rb').read())
    

    在我的情况下,它会打印:

    {'confidence': 0.75249999999999995, 'encoding': 'utf-8'}
    

    【讨论】:

    • 绝望的时代等等。
    • @John:是的,OP问题很可能是源文件编码与'-*- encoding: '行的编码不匹配。
    • @J.F. Sebastian:很可能,但是恕我直言,告诉 OP 导入一个不熟悉的 3rd 方包以进行简单的调试工作就像告诉他拿大炮来杀死蚊子一样。如果他向我们展示print repr(open("my_tiny_script.py", "rb).read()) 的结果,我们很快就能解决他的问题。如果他能告诉我们他在什么操作系统上使用哪个编辑器也会有所帮助。
    【解决方案2】:

    # -- coding: -- 行必须指定保存源文件的编码。此错误消息:

    'utf8' codec can't decode byte 0xb1 in position 0: unexpected code byte
    

    表示您没有以 UTF-8 格式保存源文件。您可以将源文件保存为支持您在源代码中使用的字符的任何编码,只要确保您知道它是什么并且有适当的编码行。

    【讨论】:

    • 你可能是对的。 Driego 应该尝试将 utf-8 替换为 sys.getdefaultencoding()
    【解决方案3】:

    你遇到了什么异常?

    您可以尝试将源代码文件保存为 UTF-8,并将其放在文件顶部:

    # coding=utf-8
    

    这告诉 Python 文件保存为 UTF-8。

    【讨论】:

    • 我有:# -- 编码:utf-8 -- 有什么区别吗?但是,当我改变它时,仍然没有任何反应......
    • 这必须是文件中的第一行或第二行,根据 PEP 0263 (python.org/dev/peps/pep-0263)。此外,如果您仍然遇到异常,请说明是哪个异常,以便更容易尝试和帮助。
    【解决方案4】:

    此代码适用于我,将文件保存为 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 以外的其他字符)。

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 2011-03-24
      • 2010-10-23
      • 2017-01-19
      相关资源
      最近更新 更多