如何正确地将带有特殊字符的Unicode / UTF-8字符串写入txt文件?

时间:2016-12-23 20:51:11

标签: python string unicode encoding utf-8

我正在为我的应用程序使用一些本地化资源,我在使用Python中的特殊字符处理字符串时遇到了一些麻烦。

注意:我已经在SO上阅读了相关的问题,但是我无法解决这个问题,我不是先解决这个问题而不先看看

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

  

çıkardınız

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

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'

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

很抱歉(可能)不那么聪明的问题,但我无法理解这件事。 谢谢!

1 个答案:

答案 0 :(得分:0)

  

但我需要打印它就像我手动粘贴到   记事本中。

"çıkardınız".encode("utf8")会将字符串转换为字节序列。
通过print函数传递将 UTF-8 字符串原样写入文件{{ 1}}打开文件时的参数:

encoding='utf8'