11

在我尝试输出俄语字符时在控制台中它给了我???????????????

谁知道为什么?

我尝试写入文件-在这种情况下是相同的情况。

例如

f=open('tets.txt','w')
f.write('some russian text')
f.close

里面的文件是 - ???????????????????????????/

或者

p="some russian text"
print p
?????????????

另外记事本不允许我用俄语字母保存文件。我给这个:

此文件包含 Unicode 格式的字符,如果您将此文件保存为 ANSI 编码的文本文件,这些字符将会丢失。要保留 Unicode 信息,请单击下面的取消,然后从编码下拉列表中选择一个 Unicode 选项。继续?

如何调整我的系统,所以我不会有这个问题。

4

5 回答 5

19

这是一个成功的例子,请阅读评论:

#!/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
于 2010-07-08T14:52:30.107 回答
9

尝试使用编解码器打开文件,您需要

import codecs

接着

writefile = codecs.open('write.txt', 'w', 'utf-8')
于 2010-07-08T13:02:41.370 回答
2

如果文件包含非 ASCII 字符,则需要定义文件编码。

http://www.python.org/dev/peps/pep-0263/

于 2010-07-07T21:05:58.217 回答
1

你用的是什么控制台?很有可能,您的控制台不支持该语言。确保您的控制台支持 Unicode(并且您的应用正在发送 Unicode 字符串)。

更新:

要解决有关 Windows 记事本问题的更新问题:单击文件->另存为,然后从“编码”下拉列表中选择“Unicode”。

于 2010-07-07T21:04:47.933 回答
0

您是否也在控制台中输入或仅在控制台中查看结果?正如 petraszd 所说,这看起来是一个 pep-0263 问题。

print p.decode('your-system-encoding')

应该在控制台中工作(我不知道您用于俄语的编码系统是什么)

如果您使用的是 .py 文件,则需要在文件顶部放置(用俄语编码替换 utf-8),如果您的操作系统配置了正确的编码# -*- coding: UTF-8 -*-,我认为不需要.decodein 。print(至少我不需要它,但我不知道它如何与俄语一起使用)

于 2010-07-08T04:44:52.993 回答