引言
上次写过一篇关于 py2下hbase的字符串编码问题(\xe7\xbc\x96) 的文章,里面的解决方案是正则来进行转换,是一个有点傻但目前又无可奈何的解决方案,并且在最后留下了三个小坑。
本以为应该可以稳定的使用一段时间,没想到才过几天就掉坑里了。
=_=!!
所以这次就开始填坑了吧!!
修改后的代码
talk is cheap ,show me the code!
废话不多说,直接上代码!
import sys
import re
reload(sys)
sys.setdefaultencoding("utf-8")
def str_to_zhongwen(var):
rule = "\\\\[xX][eE]\w{1}\\\\[xX]\w{2}\\\\[xX]\w{2}"
words = re.findall(rule, var)
for t in words:
new_txt = re.sub('\\\\[xX]','',t).decode('hex')
var = var.replace(t, new_txt)
special_chars = {
'\\\\[xX]0[dD]':'\r',
'\\\\[xX]0[aA]':'\n',
'\\\\[xX]09':'\t',
'\\\\[xX]0[Cc]':'\f',
}
for k,v in special_chars.items():
var = re.sub(k,v,var)
return var.decode('utf-8')
简单的解释一下:
- 这里填了上文后面说到的问题2,3。
- 解决方案都是使用正则来匹配,没有其他骚操作。
- 所以依然感觉一般般。
- 因为目前使用的环境是py2,所以也就没有去解决问题1,如果有在py3下遇到编码问题的朋友,计无可施后,可以尝试根据这个思路来解决一下。
over over! :)