2016-12-06 4 views
2

それは非常に単純に見えた:挿入UTF-8 JSON:「失敗:エラー処理文書#1:文字列エスケープコードに無効な文字 『x』は」

私が含まれているとtest2.jsonファイルを持っていますこの最初の文書:

mongoimport --db debat_primaire --collection primaire3 --file Desktop/twitter_elections/debat_primaire_droite_24_11_16/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': ''} 

は、私が収集primaire3としての私のdb debat_primaireで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/utf-8データがmongoDBにインポートされないのはなぜですか?

2 /可能なすべてのUTF-8文字( '\ xc3 \ xa9')からlatin1( 'é')に変更するライブラリが見つかりませんでした。 "'\ xc3 \ xa9'.decode(' utf-8 ')のようなものは動作しません。私はそれをしようとするのPython 3からのPython 2.7に移動し、他の技術:

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

=> U '\のXE9'

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

=>リターン 'E'、 'E' ではない

を返します。

助けが必要ですか?

+0

それは無効なJSONだ...私は例えば... jsonlintウェブサイトに対してそれをチェックする ' 't_text''が他の人と' 『t_text』 '...同じである必要があります... – Hackerman

+0

こんにちはハッカーマン、あなたの答えをありがとう!まあ単純な見積もりは問題ではないようでした!私はちょうどすべてのスラッシュとすべてのバックスラッシュでバックスラッシュでエスケープしました...そしてそれは動作します! –

+0

はい、あなたのjsonが有効であるためには、これは次のようにする必要があります: '{ \t" t_text ":" RT @BorisMorenas:Informez vous、suivez l '#Obsinsoumis pour d \\ xc3 \\ xa9crypter #LeGrandDebat de# Laprimaireのmy_url」、 \t "t_lng": "0.0"、 \t "t_lat": "0.0"、 \t "t_time":1480016670347、 \t "t_state": "" } '....すなわち有効なjson http://jsonlint.com/ – Hackerman

答えて

0

最初に引用符を二重引用符に変更した後、スラッシュとすべてのバックスラッシュでバックスラッシュでエスケープしました... +すべての二重引用符が値の中に...

{"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": ""}