私がする必要があるのは、例として最もよく説明されています。私は私の全体のアプリケーションのアーキテクチャを変更し、JSONを介してクライアントへのファイルの内容であると考えられる文字列を送信し、javascriptを経由してファイルを生成したい今PythonからJavaScriptへの "windows-1251"エンコード文字列の送信
content = u'<?xml version="1.0" encoding="windows-1251"?>\n' + ... #
with open(file_name, 'w') as f:
f.write(content.encode('cp1251'))
f.close;
: 以前、私は次のコードを持っていました。
だから、今私のコードは次のようなものになります、そして、
response_data = {}
response_data['file_content'] = content
response_data['file_name'] = file_name
return JsonResponse({'content':json.dumps(response_data, ensure_ascii=False).encode('utf8')}) # error generated
:
response_data = {}
response_data['file_content'] = content.encode('cp1251')
response_data['file_name'] = file_name
return JsonResponse({'content':json.dumps(response_data, ensure_ascii=False)}) # error generated
を問題は、私は私も目のオプションこの方法を試してみましたUnicodeDecodeError: 'ascii' codec can't decode byte 0xd4 in position 53: ordinal not in range(128)
を得るということですクライアントでは、utf8をwindows-1251に変換しようとします。
$.post ('/my_url/', data, function(response) {
var file_content = JSON.parse(response.content).file_content;
file_content = UnicodeToWin1251(file_content);
...でも...歪んだシンボルが表示されます。 私はここでひどく間違っていることを知っていますし、エンコーディングで物事を混乱させる可能性がありますが、それでも私はこの問題を解決することができませんでした。誰かが私のミスのヒントを教えてもらえますか?
私はエンコーディングについて言及していないと、コンテンツはutf-8になることを正しく理解していますか? –
@EdgarNavasardyan:Python 2のPython 'json'ライブラリは、互換性を最大限に高めるため、デフォルトではUTF-8にエンコードします。あなたのJavascriptコードは正しい、有効なJSONを受け取り、Javascriptオブジェクト(Unicodeテキストを含む)に再度デコードすることができます。 –