使用python编码解码

时间:2017-07-05 14:48:02

标签: python character-encoding decoding

我在python中有这个功能

Str = "ü";
print Str


def correctText( str ):
  str = str.upper()
  correctedText = str.decode('UTF8').encode('Windows-1252')
  return correctedText; 

corText = correctText(Str); 
print corText

它可以工作并转换像Ã和é这样的字符但是当我尝试时它会失败Ã?和¶

有没有办法解决它?

2 个答案:

答案 0 :(得分:0)

根据UTF8,Ã和¶不是有效字符,这意味着没有可被4整除的字节数(通常)。您需要做的是使用其他类型的编码或使用unicode()函数去除str中的错误。我建议使用梯子。

答案 1 :(得分:0)

您要做的是通过几个连续的Windows-1252代码编写有效的UTF-8代码。

例如,对于üÃ的Windows-1252代码为C3,而¼的代码为BCC3BC代码ü恰好是Ã?的UTF-8代码。

现在,对于C33F,Windows-1252代码为10,这不是有效的UTF-8代码(因为第二个字节不以à开头)。< / p>

你确定你的文字中出现了这个序列吗?例如,对于Ã,UTF-8代码(C3A0)的Windows-1252解码为?,后跟不可打印的字符(不间断空格)。因此,如果未打印第二个字符,则¶可能是文本的常规字符。

对于C2B6,Windows-1252编码为ö。不应该是C3B6,Windows-1252编码为ö,等于{{1}}的UTF-8代码?