在一个项目中,我需要一个PHP和一个Python模块(Python 3.5.2)。以及两个模块使用的配置文件。 Python configparser在从配置文件中读取特殊字符时遇到问题,例如德语变异元音(ä,ö,ü等)。从PHP方面我使用utf-8编码来绕过这个问题:
utf8_encode ("Köln") //result: Köln
从Python端我尝试了解码功能:
"Köln".decode("utf-8", "strict")
我期待结果“Köln”,但又得到了结果“Köln”。 我该怎么办才能解码我的字符串?
答案 0 :(得分:1)
尝试在文档顶部添加这些行:
# -*- coding: latin-1 -*-
# Encoding schema https://www.python.org/dev/peps/pep-0263
这可能对您有所帮助,更多文档here
答案 1 :(得分:0)
在这种情况下,您应该在.py文件的第一行添加#-*- coding: UTF-8 -*-
。
答案 2 :(得分:0)
在Python3中,所有文本都是unicode。因此,我建议您在PHP端将字符串转换为unicode(输出为u' K \ xf6ln')。完成此操作后,您可以将其转换为(在某种程度上)它在Python中的原始形式,但是,变异的元音将被销毁。
import unicodedata
unicodetext = u'K\xf6ln'
output = unicodedata.normalize('NFKD', unicodetext).encode('ascii', 'ignore')
这将输出一个孤独的Koln,没有相当漂亮的突变。根据我的研究,我无法找到解决方法,但是,请找到更合适的解决方案的任何人请发表评论
答案 3 :(得分:0)
感谢所有有用的答案和评论。我最终得到了以下解决方案:
在PHP方面,我用以下命令编码我的字符串:
$str = "path/to/file/Köln.jpg";
json_encode ($str, JSON_UNESCAPED_SLASHES);
结果是字符串“path / to / file / K \ u00f6ln.jpg”,然后存储在我的配置文件中。 Python模块使用ConfigParser来读取文件。然后使用以下命令对编码的字符串进行解码:
str.encode('utf8').decode('utf8')
结果又是“path / to / file/Köln.jpg”。