我正在编写一个程序,将twitter中的屏幕名称和推文拉到txt文件中。某些屏幕名称包含特殊的unicode字符,如♡。在我的Bash终端中,这些字符显示为空框。当我尝试插入这个字符并告诉我它包含一个不可翻译的字符时,我的sql失败了。有没有办法将python中的特殊字符转换为十六进制格式?我也很高兴用
替换这些特殊字符理想情况下,“screenName♡”会转换为“screenName0x2661”或只是将特殊字符替换为“screenName#REPLACE#”
答案 0 :(得分:0)
您可以使用>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8') '\xea\x80\x80abcd\xde\xb4'
>>> u.encode('ascii') Traceback (most recent call last):
... UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in position 0: ordinal not in range(128)
>>> u.encode('ascii', 'ignore') 'abcd'
>>> u.encode('ascii', 'replace') '?abcd?'
>>> u.encode('ascii', 'xmlcharrefreplace') 'ꀀabcd޴'
方法实现此目的,解释here。来自文档:
另一个重要的方法是.encode([encoding],[errors ='strict']), 它返回编码的Unicode字符串的8位字符串版本 在请求的编码中。 errors参数与。相同 unicode()构造函数的参数,另外一个 可能性;以及'严格','忽略'和'替换',你可以 还传递'xmlcharrefreplace',它使用XML的字符引用。 以下示例显示了不同的结果:
bundle exec rake db:migrate