看起来很简单:
我有一个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',而不是'é'
任何帮助?
答案 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": ""}