在我尝试输出俄语字符的控制台中它给了我????????????????
谁知道为什么?
我尝试写入文件 - 在这种情况下是相同的情况。
例如
f=open('tets.txt','w')
f.write('some russian text')
f.close
里面的文件是 - ??????????????????????? /
或
p="some russian text"
print p
?????????????
在其他记事本中,不允许我使用俄语字母保存文件。我这样说:
此文件包含字符 如果,Unicode格式将丢失 您将此文件保存为ANSI编码 文本文件。保持Unicode 信息,单击下面的取消和 然后选择一个Unicode选项 来自编码下拉列表。 继续?
如何调整我的系统,所以我不会遇到这个问题。
答案 0 :(得分:15)
这是一个经过深思熟虑的例子,请阅读评论:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# The above encoding declaration is required and the file must be saved as UTF-8
from __future__ import with_statement # Not required in Python 2.6 any more
import codecs
p = u"абвгдежзийкл" # note the 'u' prefix
print p # probably won't work on Windows due to a complex issue
with codecs.open("tets.txt", "w", "utf-16") as stream: # or utf-8
stream.write(p + u"\n")
# Now you should have a file called "tets.txt" that can be opened with Notepad or any other editor
答案 1 :(得分:7)
尝试使用编解码器打开文件,您需要
import codecs
然后
writefile = codecs.open('write.txt', 'w', 'utf-8')
答案 2 :(得分:2)
如果文件编码包含非ASCII字符,则需要定义文件编码。
答案 3 :(得分:1)
您使用的是哪种控制台?机会是,您的控制台不支持该语言。确保您的控制台支持Unicode(并且您的应用程序正在发送Unicode字符串)。
<强>更新强>
要解决有关Windows记事本问题的更新问题:点击文件 - &gt;另存为,然后从“编码”下拉列表中选择“Unicode”。
答案 4 :(得分:0)
您是否在控制台中键入或仅在控制台中查看结果? petraszd说,这看起来像pep-0263问题。
print p.decode('your-system-encoding')
应该在控制台中工作(我不知道你用于俄语的编码系统是什么)
如果您使用的是.py文件,则需要在文件顶部放置# -*- coding: UTF-8 -*-
(用Rusian编码替换utf-8),我认为不需要.decode
如果您的操作系统配置了正确的编码,则在print
中。 (至少我不需要它,但我不知道它如何与俄语合作)