在mongoDB中插入UTF-8 json是不可能的:“失败:错误处理文档#1:字符串转义码中的字符'x'无效”

时间:2016-12-06 15:52:42

标签: python json mongodb encoding utf-8

看起来很简单:

我有一个test2.json文件,其中包含第一个文档:

{'t_text': "RT @BorisMorenas: Informez vous, suivez l'#Obsinsoumis pour d\xc3\xa9crypter #LeGrandDebat de #Laprimaire my_url", 't_lng': 0.0, 't_lat': 0.0, 't_time': '1480016670347', 't_state': ''}

我尝试将db debat_primaire中的json作为集合primaire3导入:

mongoimport --db debat_primaire --collection primaire3 --file Desktop/twitter_elections/debat_primaire_droite_24_11_16/test2.json

返回:

2016-12-06T16:21:53.709+0100    connected to: localhost
2016-12-06T16:21:53.710+0100    Failed: error processing document #1: invalid character 'x' in string escape code
2016-12-06T16:21:53.710+0100    imported 0 documents

我已经理解UTF-8是mongoDB的原生,所以我很惊讶。 然后我意识到用'é'替换'\ xc3 \ xa9'没有任何问题。

1 /为什么没有在mongoDB中导入utf-8数据?

2 /我没有找到将所有可能的UTF-8字符('\ xc3 \ xa9')更改为latin1('é')的库。像''\ xc3 \ xa9'.decode('utf-8')这样的东西“不起作用。我从Python 3转到Python 2.7尝试它,以及其他技术:

enter '\xc3\xa9'.decode('utf-8')

=>返回你'\ xe9'

import unicodedata
unicodedata.normalize('NFKD', u'\xe9').encode('ascii','ignore');

=>返回'e',而不是'é'

任何帮助?

1 个答案:

答案 0 :(得分:0)

所以首先我将我的简单引号改为双引号,然后我只是使用反斜杠每个斜杠和每个反斜杠转义... +一个值内的所有双引号......并且它有效!

e.g。 :

{"t_text": "Europe1: Anna Cabana : \"Devant l\'\\xc3\\xa9cart avec Fran\\xc3\\xa7ois Fillon, Alain Jupp\\xc3\\xa9 a voulu jeter le gant\" \\xe2\\x80\\xa6 https:\/\/t.co\/NxQ9PgffMl", "t_lng": 0.0, "t_lat": 0.0, "t_time": "1480016674682", "t_state": ""}