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

Python 如何处理编码不清楚的字符串,python,character-encoding,jython,utf,Python,Character Encoding,Jython,Utf,我知道网络上有很多关于Python和字符编码的内容,但是我还没有找到我想要的答案。所以冒着复制的风险,我还是要问一下 它是一个获取字典的脚本,其中所有键都正确地作为unicode。这些值是编码未知的字符串。对于键来说没什么大不了的,键都很简单,与值不同。这些值可以(并且确实)包含多种编码。有一些字典,其中一些值是ASCII格式的,另一些是UTF-16BE,还有一些是cp1250 这完全打乱了进一步的处理,目前主要包括打印或连接(是的,很简单) 我提出的使Python打印语句正常工作的解决方案是:

我知道网络上有很多关于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中,它将它们变成白色正方形

我不熟悉Jython,但我发现的以下链接可能很有用:

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

以下链接还提到了有关为JVM指定编码参数的内容:


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

我们如何重现您的问题?请尝试提供一个答案。因为我提出了这个问题,我生病了,仍然无法访问此数据。对不起,我正在打开的文件中有时似乎有不同的编码。我正在阅读的是PDF文档信息。您仍然没有提供足够的信息。在不知道问题到底是什么的情况下,人们只能猜测问题是什么以及为什么会发生。您是否尝试过实施上述链接中的建议?以下是jython.org上的另外两个问题,它们似乎与你的问题相似,可能会有用:你看到我在主帖子下留下的评论了吗?是的,我看到了。我不是问你为什么没有提供足够的信息;我只是说,仍然没有足够的信息让某人能够帮助你。