![]() |
1
797
与其捣乱
假设文件以UTF-8编码,我们可以使用:
然后
在3.x中
我们也可以使用
然而,请注意,这
can cause problems when mixing
|
![]() |
2
115
在符号中
写
相反,只需输入以下字符
在2.x中,实际包含这些反斜杠转义序列的字符串可以使用
结果是
在3.x中
|
![]() |
3
65
现在你在Python3中需要的就是
[2016年2月10日编辑,要求澄清] Python3添加了 把…编码 将参数设置为其打开函数。以下是关于开放功能的信息: https://docs.python.org/3/library/functions.html#open
因此,通过添加
|
![]() |
4
18
所以,我找到了一个解决我所寻找的问题的方法,那就是:
这里有一些不寻常的编解码器很有用。这种特殊的读取允许从Python中获取UTF-8表示,将其复制到ASCII文件中,并将其读入Unicode。在“字符串转义”解码下,斜线不会加倍。 这允许我想象中的那种往返。 |
![]() |
5
17
这适用于在Python 3.2中读取UTF-8编码的文件:
|
![]() |
6
14
|
![]() |
7
7
除了
|
![]() |
8
6
为了读取Unicode字符串并发送到HTML,我这样做了:
适用于python驱动的http服务器。 |
![]() |
9
6
好吧,你最喜欢的文本编辑器没有意识到这一点
如果你想在Python中读写编码文件,最好使用 codecs 模块。 在终端和应用程序之间粘贴文本很困难,因为你不知道哪个程序会使用哪种编码来解释你的文本。您可以尝试以下操作:
然后将此字符串粘贴到编辑器中,并确保它使用Latin-1存储它。假设剪贴板不会混淆字符串,则往返应该有效。 |
![]() |
10
5
您偶然发现了编码的一般问题:我如何分辨文件的编码方式? 答案:你不能 除非 文件格式为此提供了支持。例如,XML以以下内容开头:
此标头经过精心选择,因此无论编码如何,都可以读取。在你的例子中,没有这样的提示,因此你的编辑器和Python都不知道发生了什么。因此,你必须使用
至于你的编辑器,你必须检查它是否提供了一些设置文件编码的方法。 UTF-8的要点是能够将21位字符(Unicode)编码为8位数据流(因为这是世界上所有计算机都能处理的唯一东西)。但由于大多数操作系统早于Unicode时代,它们没有合适的工具将编码信息附加到硬盘上的文件上。 下一个问题是Python中的表示。这在 comment by heikogerlach 您必须明白,您的主机只能显示ASCII码。为了显示Unicode或任何内容>=charcode 128,它必须使用某种转义方式。在编辑器中,您不能键入转义的显示字符串,而必须键入字符串的含义(在这种情况下,您必须输入变音并保存文件)。 也就是说,你可以使用Python函数eval()将转义字符串转换为字符串:
如您所见,字符串“\xc3”已被转换为单个字符。这现在是一个8位字符串,UTF-8编码。要获取Unicode:
Gregg Lind 问:我认为这里缺少一些部分:文件f2包含:hex:
答:这取决于你的意思。ASCII不能表示字符> 127.因此,你需要某种方式来表达“接下来的几个字符意味着一些特殊的东西”,这就是序列“\x”的作用。它说:接下来的两个字符是单个字符的代码。“\u”使用四个字符对Unicode进行编码,最高可达0xFFFF(65535)。 因此,您不能直接将Unicode写入ASCII(因为ASCII根本不包含相同的字符)。你可以把它写成字符串转义(如f2);在这种情况下,文件可以表示为ASCII。或者你可以把它写成UTF-8,在这种情况下,你需要一个8位的安全流。
您的解决方案使用
请记住,文件只是一个8位字节序列。比特和字节都没有意义。是你说“65意味着‘A’”。自从
|
![]() |
11
4
\x.序列是Python特有的。这不是一个通用的字节转义序列。 您实际如何输入UTF-8编码的非ASCII取决于您的操作系统和/或编辑器。 Here's how you do it in Windows .让OS X进入 一 带着浓重的口音,你简直可以打 选项 + E 那么 A. ,OS X中几乎所有的文本编辑器都支持UTF-8。 |
![]() |
12
3
您还可以改进原始
|
![]() |
13
1
我试图解析 iCal 使用Python 2.7.9:
但我得到了:
只需:
(现在它可以打印lik-bss。) |
![]() |
14
-1
我找到了最简单的方法,将整个脚本的默认编码更改为“UTF-8”:
任何
至少适用于
|