それは非常に単純に見えた:挿入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' ではない
を返します。助けが必要ですか?
それは無効なJSONだ...私は例えば... jsonlintウェブサイトに対してそれをチェックする ' 't_text''が他の人と' 『t_text』 '...同じである必要があります... – Hackerman
こんにちはハッカーマン、あなたの答えをありがとう!まあ単純な見積もりは問題ではないようでした!私はちょうどすべてのスラッシュとすべてのバックスラッシュでバックスラッシュでエスケープしました...そしてそれは動作します! –
はい、あなたの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