Python Unicode 字节串转成中文问题

1. 序

我觉得 Python 2.7 最大的坑就是字符编码的问题,默认不支持中文。就算你加个中文呢注释都要在文件顶部指定:# -*- coding: utf-8 -*-

说真的,我从来搞不懂也记不住这些个编码解码巴拉巴拉。。。

但是前两天还真的遇到一个问题了。

2. 需求

有一份数据要入库,数据来源是从一个 API 获取 json 数据,解析成行之后写到文件里
到 HDFS 目录就好了。

Python 解析 json 非常方便。但是偏偏开发的这个接口的哥们儿返回的都是 \u7f16\u7801\u771f\u8ba8\u538c 这样的结果,查了一下原来是 unicode 中文编码以 ascii 码的方式来解析的结果。

一开始还以为是字符集的问题,查了半天才找到了两个解决方案:

3. 解决方案

a. str.decode

print '''\u7f16\u7801\u771f\u8ba8\u538c'''.decode('unicode_escape')
#输出:编码真讨厌

b. codecs.open

with codecs.open(file_name, 'w', 'utf-8') as f:
    f.write('\n'.join([ '\001'.join(row) for row in lines ]))

4.参考文章