【问题标题】:How to correctly write a Unicode/UTF-8 String with special characters to a txt file?如何正确地将带有特殊字符的 Unicode/UTF-8 字符串写入 txt 文件?
【发布时间】:2016-12-23 20:51:11
【问题描述】:

我正在为我的应用使用一些本地化资源,但在 Python 中处理带有特殊字符的字符串时遇到了一些问题。

注意:我已经阅读了关于 SO 的相关问题,但我无法解决这个问题,我不是在没有先查看的情况下输入这个问题

假设我正在处理土耳其语资源文件并且我有以下字符串:

çıkardınız

现在,如果我将此字符串复制/粘贴到记事本中,它会正确显示(Sublime Text 显示带有此字符串的文本文件具有 UTF-8 编码)。 然后我在 Python 控制台中加载字符串并尝试将其打印到文件中,只需:

f = open(d + "C:\\somepath\\test.txt", "w")
print("çıkardınız", file=f)
f.close()

我收到了UnicodeEncodingError。我尝试使用encode("utf8"),但我在记事本中得到了这个结果:

b'\xc3\xa7\xc4\xb1kard\xc4\xb1n\xc4\xb1z'

现在,我知道这在技术上是该原始字符串的正确值,但我需要打印它,就像我将它手动粘贴到记事本中一样。 另外,我还需要一种可以处理没有特殊字符的字符串的方法,比如英文中的随机单词。

对于这个(可能)不太聪明的问题,我很抱歉,但我就是无法理解这件事。 谢谢!

【问题讨论】:

    标签: python string unicode encoding utf-8


    【解决方案1】:

    但我需要像手动将其粘贴到 记事本。

    "çıkardınız".encode("utf8") 会将字符串转换为字节序列。
    要通过print 函数将UTF-8 字符串按原样写入文件,请在打开文件时传入encoding='utf8' 参数:

    f = open(d + "C:\\somepath\\test.txt", "w", encoding='utf8')
    print("çıkardınız", file=f)
    f.close()
    

    【讨论】:

    • 谢谢!我专注于打印功能,我完全错过了打开功能中的那个额外参数,我的错
    猜你喜欢
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多