【问题标题】:How to write Russian characters in file?如何在文件中写入俄语字符?
【发布时间】:2011-03-13 01:01:49
【问题描述】:

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

谁知道为什么?

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

例如

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

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

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

在额外的记事本中,不允许我用俄语字母保存文件。我给这个:

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

如何调整我的系统,这样我就不会有这个问题了。

【问题讨论】:

  • 这个问题的题目选得不好!
  • 真的是? 还是
  • @Gumbo:? 用于当目标因超出字符集范围而无法存储给定字符时使用。例如。数据库和输出(文件/标准输出/等)编写器。当目标能够显示给定字符时使用,但不要这样做,因为它超出了指示使用的字符集范围。例如。网络浏览器。总而言之,这里使用? 是有道理的。
  • @Carl - 我打算建议海报只是让他们在深沉和神秘的暗流中变得悲惨。
  • @Philipp:我完全同意这一点,但不幸的是,在许多地方,许多语言的真相是不同的。那些“未知”字符将被简单地丢弃或替换。目标不知道“更好”。

标签: python windows unicode python-2.x python-unicode


【解决方案1】:

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

更新:

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

【讨论】:

  • 您尝试了哪些游戏机?您使用的是什么操作系统?您能否使用 Python 以外的编程语言将俄语字符成功输出到控制台?
  • 我没有注意到它什么时候发生的。但它发生了,在我安装了 PYMSSQL 和 ODBC 等相同的扩展之后。能出吗?
  • 如果安装扩展后行为发生变化,请卸载扩展并查看旧行为是否恢复。扩展引入意外问题并非闻所未闻。
  • @user375373:如果您回答了 bta 的问题,那将非常有帮助。
【解决方案2】:

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

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

【讨论】:

  • 没用!即使当我在记事本中保存俄语文本时,它也会告诉我我无法保存。因为我丢失了我的数据。
  • 遵循记事本给出的建议并选择其中一种 Unicode 编码。
  • 请不要在记事本中编码。这真是,非常糟糕的主意。试试 vim 或 emacs。如果这两个太可怕了——试试 Notepad++ 或 Scite 或比 Notepad 更理智的东西。
  • @petraszd:我们在这里只使用记事本,因为它支持 Unicode。
【解决方案3】:

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

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

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

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

【讨论】:

  • 当我打字时一切正常。当我输入这个 # -- coding: UTF-8 -- 我得到错误: SyntaxError: non ASCI character '\xff' in file
【解决方案4】:

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

import codecs

然后

writefile = codecs.open('write.txt', 'w', 'utf-8')

【讨论】:

  • 当我用这个将俄语字符写入文件时,它会输出乱码
【解决方案5】:

这是一个已解决的示例,请阅读 cmets:

#!/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

【讨论】:

  • 我收到错误:SyntaxError: non ASCI character '\xff' in file 'my python file',但没有声明编码
  • 我确实声明了编码,这就是第二行的用途。并且文件中没有字符'\xff'(即ÿ)。您确定您所做的一切都正确,并且所有字符都正确显示在记事本中吗?
猜你喜欢
  • 2016-11-10
  • 2013-10-12
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多