我正在尝试在python中解码你'\ uf04a',因此我可以打印它而不会出现错误警告。换句话说,我需要将愚蠢的微软Windows 1252字符转换为实际的unicode
包含异常错误的html源代码来自http://members.lovingfromadistance.com/showthread.php?12338-HAVING-SECOND-THOUGHTS
点击此处http://www.fileformat.info/info/unicode/char/f04a/index.htm了解你的'uf04a'和你'uf04c'
一个例子如下:
"Oh god please some advice ":
出[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', '?')
希望这对其他初学者有帮助。
答案 0 :(得分:5)
符号u'\uf04a'
表示Unicode码点U + F04A,根据定义,它是私有用码点。这意味着Unicode标准不会为其分配任何字符,也永远不会;相反,它可以被私人协议使用。
谈论打印是没有意义的。如果在某些上下文中有关于使用它的私有协议,则使用具有分配给该代码点的字形的字体来打印它。不同的协议和不同的字体可能会将完全不同的字符和字形分配给同一个代码点。
U + F04A可能是某些早期阶段对字符数据进行错误处理(例如,错误转换)的结果。
答案 1 :(得分:3)
u'\uf04a'
已经 一个Unicode对象,这意味着无需解码。如果你的目标是特定的文件编码,如UTF-8(不与Unicode相同,那么你可以用它来做编码它)一直困惑于此。)
u'\uf04a'.encode("utf-8")
为您提供一个字符串(Python 2)或bytes
对象(Python 3),然后您可以将其写入文件或UTF-8终端等。
您将无法将其编码为纯Windows字符串,因为cp1252没有该字符。
你可以做的是通过告诉编码器用?
替换丢失的字符来将其转换为没有那些违规字符的编码:
>>> u'who\uf04a why\uf04c'.encode("ascii", errors="replace")
'who? why?'