2016-10-24 21 views
0

私はPython WebサイトのI18n(国際化)クラスを作成しました。しかし、私が翻訳している言語の中には、フランス語のようなアクセントが必要なものがあります。JSON(Python)を使用したUnicodeエンコーディング

Je suis alléのéを\ u00e9に置き換えた場合、それはうまく動作するとわかりました。だからJe suis all\u00e9私の翻訳者にとって大変不便です。ですから、これを修正するには、ファイルをエンコードしてすべての文字をUnicode \ u00でエンコードする方法が必要です。私はこれを.encode( 'utf-8')で行うことができますが、これは\ xc3 \ xa9で返され、バイト文字列です(開始位置にbを付けてb '\ xc3 \ xa9')。 u00e9とそれはまだJSONデコーダのための文字列です。

EDIT:JSONファイルで 私はこれがあります。 "default": "Je suis allé"

を、私は結果を印刷しようとし、それは私にこの与える:私は帝suisののの\ u00e9にJSONを変更すると、それが与えるJe suis allé

を私はこれ:Je suisallé(それは働く)

+0

JSONはutf-8を使用しているため、エンコードする必要なしにアクセントを使用できます。 – njzk2

+0

現在使用しているコードとエラーが発生したトレースバックを投稿できますか?私はあなたがテキストを '印刷する 'ことを試みている問題に遭遇していると思いますか? – sytech

+1

おそらく 'import json'、' 'Je suis all \\ u00e9" ''を返す' json.dumps( "Je suisallé") 'を探しています。 – unutbu

答えて

1

あなたがダンプするときにjsonモジュールが与えるASCII保証をオーバーライドしたいと思うように聞こえる。

with io.open('your_file.txt', 'w', encoding='utf-8') as f: 
    json.dump(u"Je suis allé", f, ensure_ascii=False) 

今、あなたは文字通り代わりにuはエスケープ\のファイルにé文字を取得し、読みやすくなります:あなたは(これはデフォルトはtrue)ensure_asciiキーワード引数を指定していることを行うことができますあなたの翻訳者のために。

ここで注意しなければならないのは、ファイルを読み込むためにファイルを開くためのエンコーディングを知っておく必要があります(ヒント:エンコーディングしたエンコーディングのことです)。彼らがすべての翻訳を書いた後、必要ならばいつでも新しいバージョンのファイルを保存することができます。あるいは、コードベースでutf-8を使って標準化するだけです。

+0

jsonファイルを読み込もうとしていますが、保存しません。これは私のコードです: 'self.file = open( 'I18n /' + self.language + '.json'、 'r') self.fileStr = self.file.read() self.dict = json .loads(self.fileStr) ' – JustRayz

0

申し訳ありませんが、すべて修正されました。私がファイルを読んでいたとき、私のエンコーディングはutf-8に設定されていませんでした。私はこれを試したと思ったが、明らかにそうではなかった!私は今、徹底的にエンコーディングとutf-8を徹底的に持っています...

関連する問題