gpt4 book ai didi

python - 如何处理编码不清楚的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:03 25 4
gpt4 key购买 nike

我知道网络上和 stackoverflow 上有很多信息。关于Python和字符编码,但我还没有真正找到我正在寻找的答案。因此,尽管冒着重复的风险,我还是要问一下。

这是一个获取字典的脚本,其中所有键都正确地为 unicode。这些值是具有未知编码的字符串。对于键来说,这并不重要,键都非常简单,与值非常不同。这些值可以(并且确实)包含多种编码。有一些字典,其中一些值采用 ASCII 格式,其他值为 UTF-16BE,还有一些值为 cp1250。

这完全搞乱了进一步的处理,目前主要包括打印或连接(是的,就这么简单)。

我想出的使 Python 打印语句正常工作的解决方法是:

for key in data.keys():
# hope they did not chose a funky encoding
try:
print key+":"+data[key] # this triggers a UnicodeDecodeError on many encodings
current_data = data[key]
except UnicodeDecodeError:
# trying to cope with a funky encoding
current_data = data[key].decode(chardet.detect(data[key])['encoding']) # doing this on each value, because the dictionary sometimes contains multiple encodings
print key+":", # printing without newline was a workaround, because connecting didn't work
print current_data.encode('UTF-8')

在 Python 中这工作得很好。在我在项目中使用的 Jython 2.7rc1 中(不是切换选项),它打印的字符绝对不是原始编码(看起来很时髦的字符)。如果有人知道我如何使其在 Jython 中也能工作,那就太好了!

编辑(示例):样本值:

Our latest scenarios explore two possible versions of the future seen through fresh “lenses”. 

创建一个字符串,其中左右双引号分别变为\x8D 和\x8E。我不知道那是什么编码。在 Python 中,使用上面的代码后,它会删除它们。在 Jython 中,它将它们变成白色方 block 。

最佳答案

我不熟悉 Jython,但我发现的以下链接可能有用:http://python.6.x6.nabble.com/character-encoding-issues-td1766833.html

它表示您应该将所有 unicode 字符串保存在源代码的单独文件中,并使用 codecs.open 读取它们。这似乎对遇到与您类似问题的人有效。

以下链接还提到了有关向 JVM 指定编码参数的内容:https://answers.launchpad.net/sikuli/+question/156443

在没有看到任何实际错误输出的情况下,这就是我可以提供的帮助范围。

关于python - 如何处理编码不清楚的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31072231/

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