gpt4 book ai didi

python - 为什么所有这些 un​​icode 命令在 Python 中都能正常工作?他们都正确地打印了我的角色,不管我做什么

转载 作者:行者123 更新时间:2023-11-28 22:03:33 25 4
gpt4 key购买 nike

可能我完全不明白,所以你能看一下代码示例并告诉我我应该怎么做,以确保它能正常工作吗?

我在 Eclipse 中用 Pydev 试过了。我使用 python 2.6.6(因为某些库不支持 python 2.7)。

首先,不使用codecs模块

# -*- coding: utf-8 -*-

file1 = open("samoloty1.txt", "w")
file2 = open("samoloty2.txt", "w")
file3 = open("samoloty3.txt", "w")
file4 = open("samoloty4.txt", "w")
file5 = open("samoloty5.txt", "w")
file6 = open("samoloty6.txt", "w")

# I know that this is weird, but it shows that whatever i do, it not ruin anything...
print u"ą✈✈"
file1.write(u"ą✈✈")
print "ą✈✈"
file2.write("ą✈✈")

print "ą✈✈".decode("utf-8")
file3.write("ą✈✈".decode("utf-8"))
print "ą✈✈".encode("utf-8")
file4.write("ą✈✈".encode("utf-8"))

print u"ą✈✈".decode("utf-8")
file5.write(u"ą✈✈".decode("utf-8"))
print u"ą✈✈".encode("utf-8")
file6.write(u"ą✈✈".encode("utf-8"))

file1.close()
file2.close()
file3.close()
file4.close()
file5.close()
file6.close()

file1 = open("samoloty1.txt", "r")
file2 = open("samoloty2.txt", "r")
file3 = open("samoloty3.txt", "r")
file4 = open("samoloty4.txt", "r")
file5 = open("samoloty5.txt", "r")
file6 = open("samoloty6.txt", "r")

print file1.read()
print file2.read()
print file3.read()
print file4.read()
print file5.read()
print file6.read()

这些打印品中的每一个都可以正常工作,我没有得到任何有趣的字符。

我也试过这个:我删除了之前测试中创建的所有文件,只更改了那些行:

file1 = open("samoloty1.txt", "w")

给那些:

file1 = codecs.open("samoloty1.txt", "w", encoding='utf-8')

再次一切正常...

任何人都可以举例说明哪些有效,哪些无效?

这应该是一个单独的问题吗?我正在通过这个下载网页:

content = urllib.urlopen(some_url).read()
ucontent = unicode(content, encoding) # i get encoding from headers

这是否正确且足够?接下来我应该怎么做才能将它存储在 utf-8 文件中? (我问它是因为无论我以前做什么,它都有效...)

** 更新 **

可能一切正常,因为 PyDev(或只是 Eclipse)有以 UTF-8 编码的终端。因此,对于测试,我使用了 Windows 7 中的 cmd,但出现了一些错误。现在一切都按预期崩溃了。 :D 在这里,我展示了我为让它再次工作所做的更改(所有这些更改对我来说都是合理的,并且它们与我在答案和 Python 文档中的文档中学到的内容一致)。

print u"ą✈✈".encode("utf-8") # added encode
file1.write(u"ą✈✈".encode("utf-8")) # added encode
print "ą✈✈"
file2.write("ą✈✈")

print "ą✈✈" # removed .decode("utf-8")
file3.write("ą✈✈") # removed .decode("utf-8"))
print "ą✈✈" # removed .encode("utf-8")
file4.write("ą✈✈") # removed .encode("utf-8"))

print u"ą✈✈".encode("utf-8") # changed from .decode("utf-8")
file5.write(u"ą✈✈".encode("utf-8")) # changed from .decode("utf-8")
print u"ą✈✈".encode("utf-8")
file6.write(u"ą✈✈".encode("utf-8"))

就像有人说的那样,当我使用编解码器时,我不需要每次在写入文件之前都使用 encode()。 :)问题是,哪个答案应该被标记为正确?

最佳答案

您很幸运,您的控制台编码默认为 utf-8

如果将 unicode 对象传递给文件对象 (sys.stdout) 的 write 方法方法,该对象将被隐式解码为它的 encoding 属性。

在 Windows 上工作的人就没那么幸运了:How to workaround Python "WindowsError messages are not properly encoded" problem?

关于python - 为什么所有这些 un​​icode 命令在 Python 中都能正常工作?他们都正确地打印了我的角色,不管我做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com