Python 用西班牙语或波兰语字符编码/转换字符串

Python 用西班牙语或波兰语字符编码/转换字符串,python,python-3.x,unicode,encoding,utf-8,Python,Python 3.x,Unicode,Encoding,Utf 8,1) 如何将带有字符串(如“wdzi\xc4\x99czno\xc5\x9bci”)的变量转换为“wdzięczności” 2) 另外,我如何转换字符串变量和字符,如“±”、“Ä”™", "Ć“转换为正确的字母 我强调“变量”,因为我从谷歌搜索得到的只是带有“u'some string”之类的例子,而我无法得到任何类似的结果 我在脚本的第二行中使用了“#-*-编码:utf-8-*-”,但仍然会遇到这些问题 还有人说simple print应该正确输出,但事实并非如此。在Python 2.7

1) 如何将带有字符串(如
“wdzi\xc4\x99czno\xc5\x9bci”
)的变量转换为
“wdzięczności”

2) 另外,我如何转换字符串变量和字符,如
“±”、“Ä”™", "Ć“
转换为正确的字母

我强调“变量”,因为我从谷歌搜索得到的只是带有“u'some string”之类的例子,而我无法得到任何类似的结果

我在脚本的第二行中使用了
“#-*-
编码:
utf-8-*-
”,但仍然会遇到这些问题


还有人说simple print应该正确输出,但事实并非如此。

在Python 2.7 IDLE中,我得到以下输出:

>>> print "wdzi\xc4\x99czno\xc5\x9bci".decode('utf-8')
wdzięczności
您的第一个字符串似乎是一个UTF-8字节的字符串,所以只需将其解码为Unicode字符串。当Python打印该字符串时,它将根据您的环境将其编码回正确的编码

如果您使用的是Python3,那么您有一个字符串被不正确地解码,需要做更多的工作来修复损坏

>>> print("wdzi\xc4\x99czno\xc5\x9bci".encode('iso-8859-1').decode('utf-8'))
wdzięczności

这个简单的例子确实有效,谢谢。但我仍然在脚本本身中遇到这样的错误:
unicodeincodederrror:“拉丁-1”编解码器无法对187位的字符“\u0119”进行编码:序号不在范围内(256)
Edit:我刚刚注意到,现在我在输出中有“wdzi\xc4\x99czno\xc2\xb6ci”,解码后会打印“wdzięczno”ci或
UnicodeDecodeError:“utf-8”编解码器无法解码位置88中的字节0xb1:无效的开始字节
尝试在windows-1250中编码,但仍有错误。有什么想法吗?@dyer如果您使用的是Python 3,那么您在程序中创建的字符串应该已经是有效的Unicode字符串,不需要修复<例如,代码>'\u0119'
。我的建议仅适用于从程序外部收到的已损坏的字符串,它称为Mojibake。最好的解决方案是从一开始就防止这种情况发生,但是您的问题没有足够的信息来解决这个问题。@戴尔您应该对字节字符串和Unicode文本字符串之间的区别有一些了解→ 看见如果您最终得到的字符串类似于
“±”
,您可能使用了错误的编码打开了一个文件,例如使用
open(path,encoding='utf-8')
而不是
open(path)
@roeland,但是有没有办法将其转换为应该的格式?如何对其进行编码/解码?这是错误编码的字符,对吗?我用“Obowi±zki wdziêczno¨ci”之类的字符串尝试一切,但我无法让它工作。@roeland也(现在无法编辑)我使用的是BeutifulSoup,我有“soup=bs4.beautifulsou(openfile.read(),“html.parser”,来自_encoding='utf-8')”但它仍然这样输出,所以我正在努力转换输出。可能是