当前位置: 首页 > 面试题库 >

处理Python Unicode字符串中错误编码的字符

阙佐
2023-03-14
问题内容

我正在处理python-lastfm库返回的unicode字符串。

我假设在途中某个地方,该库获取了错误的编码,并返回了可能包含无效字符的unicode字符串。

例如,我期望变量a中的原始字符串为“G​​lück”

>>>一个
u'Gl \ xfcck'
>>>打印一个
追溯(最近一次通话):
  文件“”,第1行,位于 
UnicodeEncodeError:'ascii'编解码器无法在位置2编码字符u'\ xfc':序数不在范围内(128)

\ xfc是转义值252,它对应于latin1编码的“ü”。它以某种方式以python无法自行处理的方式嵌入到unicode字符串中。

如何将其转换回包含原始“Glück”的普通或unicode字符串?我尝试使用解码/编码方法,但是遇到了UnicodeEncodeError或包含序列\
xfc的字符串。


问题答案:

您的unicode字符串很好:

>>> unicodedata.name(u"\xfc")
'LATIN SMALL LETTER U WITH DIAERESIS'

您在交互式提示符下看到的问题是,解释器不知道将字符串输出到终端所使用的编码,因此它退回到了“
ascii”编解码器中,但是该编解码器只知道如何处理ASCII。字符。它在我的机器上正常工作(因为sys.stdout.encoding对我来说是“
UTF-8”-可能是因为诸如我的环境变量设置与您的环境变量设置有所不同)

>>> print u'Gl\xfcck'
Glück


 类似资料:
  • 场景:用于编辑产品详细信息的HTML文档被编码为ISO-8859-1,并将POST数据发送到PHP文件(也被编码为ISO-8859-1)。这个PHP文件有mysql_real_escape_string-functions来清理输入。数据库/MySQL server字符集为UTF-8。问题是,当POST字符串中包含斯堪的纳维亚字母(ä,ö,å)时,mysql_real_escape_string返

  • StringBuffer 是一个字符串拼接工具,和java中的StringBuilder类似。对于那些需要大量的字符串连接的时候,用 StringBuffer 更高效一些。它实现了以下API: class StringBuffer { public function __construct($str); public function isEmpty(); publi

  • 字符串在我们平常的Web开发中经常用到,包括用户的输入,数据库读取的数据等,我们经常需要对字符串进行分割、连接、转换等操作,本小节将通过Go标准库中的strings和strconv两个包中的函数来讲解如何进行有效快速的操作。 字符串操作 下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档。 func Contains(s, substr string)

  • 函数 说明 Series.str.capitalize() 将 Series / 索引中的字符串转换为大写。 Series.str.cat([others, sep, na_rep, join]) 使用给定的分隔符连接 Series / 索引中的字符串。 Series.str.center(width[, fillchar]) 用附加字符填充 Series / 索引中字符串的左侧和右侧。 Seri

  • 本节要介绍一些字符串处理的标准库函数。这里介绍的技术适用于开发文本编辑器、字处理器、桌面排版软件、计算机化打字系统和其他文本处理软件。我们这里使用基于指针的字符串,本书稍后还将介绍把字符串作为成熟的对象。 5.12.1 字符与字符串基础 字符是 C++ 编程语言的基本组件。每个程序都是由一系列字符用有意义的方式组合而成的,计算机将其解释为一系列指令,用来完成一组任务。程序可能包含字符常量(char