我在python中有这个功能
Str = "ü";
print Str
def correctText( str ):
str = str.upper()
correctedText = str.decode('UTF8').encode('Windows-1252')
return correctedText;
corText = correctText(Str);
print corText
它可以工作并转换像Ã和é这样的字符但是当我尝试时它会失败Ã?和¶
有没有办法解决它?
答案 0 :(得分:0)
根据UTF8,Ã和¶不是有效字符,这意味着没有可被4整除的字节数(通常)。您需要做的是使用其他类型的编码或使用unicode()函数去除str中的错误。我建议使用梯子。
答案 1 :(得分:0)
您要做的是通过几个连续的Windows-1252代码编写有效的UTF-8代码。
例如,对于ü
,Ã
的Windows-1252代码为C3
,而¼
的代码为BC
。C3BC
代码ü
恰好是Ã?
的UTF-8代码。
现在,对于C33F
,Windows-1252代码为10
,这不是有效的UTF-8代码(因为第二个字节不以à
开头)。< / p>
你确定你的文字中出现了这个序列吗?例如,对于Ã
,UTF-8代码(C3A0)的Windows-1252解码为?
,后跟不可打印的字符(不间断空格)。因此,如果未打印第二个字符,则¶
可能是文本的常规字符。
对于C2B6
,Windows-1252编码为ö
。不应该是C3B6
,Windows-1252编码为ö
,等于{{1}}的UTF-8代码?