如何在PYTHON中将u'uf04a&39;转换为Unicode

2022-04-11 00:00:00 python unicode decode cp1252

问题描述

我正在尝试在python中解码u‘uf04a’,这样我就可以打印它而不会出现错误警告。换句话说,我需要将愚蠢的Microsoft Windows 1252字符转换为实际的Unicode

包含异常错误的html的源代码来自这里http://members.lovingfromadistance.com/showthread.php?12338-HAVING-SECOND-THOUGHTS

单击此处http://www.fileformat.info/info/unicode/char/f04a/index.htm阅读有关u‘uf04a’和u‘uf04c’的信息

一个示例如下所示:

"Oh god please some advice ":

out[408]:哦,上帝,请给我一些建议uf04c‘

给出一个这样的线程作为测试示例:

thread = u'who are you uf04a Why you are so harsh to her uf04c'
thread.decode('utf8')

print u'uf04a'
print u'uf04a'.decode('utf8') # error!!!

‘charmap’编解码器无法对位置1526中的字符u‘uf04a’进行编码:字符映射到未定义

在两个Python脚本的帮助下,我成功地转换了u‘x92’,但我仍然使用u‘uf04a’。有什么建议吗?

参考资料

https://github.com/AnthonyBRoberts/NNS/blob/master/tools/killgremlins.py

Handling non-standard American English Characters and Symbols in a CSV, using Python

解决方案:

根据下面的评论:我将这些字符集替换为问号(‘?’)

thread = u'who are you uf04a Why you are so harsh to her uf04c'
thread = thread.replace(u'uf04a', '?')
thread = thread.replace(u'uf04c', '?')

希望这对其他初学者有帮助。


解决方案

u'uf04a'

已经是Unicode对象,这意味着没有什么要解码的。如果您的目标是像UTF-8这样的特定文件编码(与Unicode不同,但一直与其混淆),则您可以对其执行的唯一操作是编码。

u'uf04a'.encode("utf-8")

为您提供一个字符串(Python2)或bytes对象(Python3),然后您可以将其写入文件或UTF-8终端等。

您将无法将其编码为纯Windows字符串,因为cp1252没有该字符。

您可以做的是通过告诉编码器将丢失的字符替换为?

,将其转换为不包含这些违规字符的编码:
>>> u'whouf04a whyuf04c'.encode("ascii", errors="replace")
'who? why?'

相关文章