【发布时间】:2015-10-16 00:01:10
【问题描述】:
字符串是西班牙语字符串:Am�rica
它应该是 ê(波浪号),但由于某种原因,我得到了 �。
我已经研究过在 Python 中使用 .decode 和 .encode 以及 unicode() 方法,但没有什么能提供我想要的输出。
用波浪号将此字符转换为正确的“e”的最佳方法是什么?
这有意义吗?我可以从 � 转换为 ê 吗??
我对包含 Am�rica 的文件运行了一个 hexdump,这就是我发现的:
(env)bvh331-apvpsv01:active admin$ hexdump test.txt
0000000 41 6d ef bf bd 72 69 63 61 0a
000000a
我还运行了一个文件 -I 来获取 char_set:
alexdaro@hplive-us163783-la-silo01 Desktop $ file -I tmp.es.srt
tmp.es.srt: text/plain; charset=utf-8
【问题讨论】:
-
我们首先需要知道的是文件的编码。如果你不知道这个,那么这个问题就只能靠猜测了。
-
...如果您想至少让猜测有依据,您可以包含 hexdump 输出,以便我们知道哪些特定字节用于对相关字符进行编码。
-
1.
ê有一个抑扬符,而不是波浪号。 2. 西班牙语中不使用抑扬符。 3. 这个词不需要波浪号 - 它应该是América。 -
...当然,另一个问题是您的 终端 是否正确呈现 Python 解释器发出的内容。您的代码可能是 100% 完美的,但如果 Python 正在写出 UTF-8 并且您的终端正在呈现 Windows-1252,那么您的终端无论如何都无法正确打印发出的字符。
-
@TigerhawkT3 - 是的,谢谢你的澄清。我在文件上运行了 mediainfo,它显示的是:\n (env)bvh331-apvpsv01:active admin$ mediainfo tmp.es.srt General 全名:tmp.es.srt 格式:SubRip 文件大小:23.0 KiB 文本格式:SubRip 压缩模式:无损
标签: python unicode python-unicode