Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字典作为UTF-8转储到json文件_Python_Json_Encoding_Character Encoding - Fatal编程技术网

Python 将字典作为UTF-8转储到json文件

Python 将字典作为UTF-8转储到json文件,python,json,encoding,character-encoding,Python,Json,Encoding,Character Encoding,我想将字典转储到文件中,如中。但我在编码方面遇到了一个问题: 当我这么做的时候 print(data) 我在候机楼看到这样的东西: {'legend': '\n\r\n\t\tНа прямой расположены стойла, в которые необходимо расставить коров так, чтобы минимальное расcтояние между коровами было как можно больше.\r\n \n', 'input_s

我想将字典转储到文件中,如中。但我在编码方面遇到了一个问题: 当我这么做的时候

print(data) 
我在候机楼看到这样的东西:

{'legend': '\n\r\n\t\tНа прямой расположены стойла, в которые необходимо расставить коров так, чтобы минимальное расcтояние между коровами было как можно больше.\r\n    \n', 'input_specification': '\n\r\n     Входные данные\r\n    \n\r\n\t\tВ первой строке вводятся числа N\xa0 (2 < N  < 10001) – количество стойл и K\xa0 (1 < K < N ) – количество коров. Во второй строке\xa0задаются N натуральных чисел в порядке возрастания – координаты стойл (координаты не превосходят 109)\r\n    \n', 'output_specification': '\n\r\n     Выходные данные\r\n    \n\r\n\t\tВыведите одно число – наибольшее возможное допустимое расстояние.\r\n    \n'}
文件中有一些奇怪的特殊字符:

{"legend": "\n\r\n\t\t\u041d\u0430 \u043f\u0440\u044f\u043c\u043e\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0441\u0442\u043e\u0439\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0440\u043e\u0432 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441c\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0440\u043e\u0432\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.\r\n    \n", "input_specification": "\n\r\n     \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\r\n    \n\r\n\t\t\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0430 N\u00a0 (2 < N  < 10001) \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u0439\u043b \u0438 K\u00a0 (1 < K < N ) \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0440\u043e\u0432. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435\u00a0\u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f N \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044f \u2013 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0442\u043e\u0439\u043b (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0442 109)\r\n    \n", "output_specification": "\n\r\n     \u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\r\n    \n\r\n\t\t\u0412\u044b\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u2013 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435.\r\n    \n"}
{“图例”:"\\n\n\n\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\u043e\u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u043a\u043e\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\u0440\U044 4 4 4 4 4 4 4 4 4 4 4\U044 4 4 4\U044 4\U044 4 4\或者或者或者或者或者或者或者或者或者U043\U043\U043\U043\U043\U043\U043\U043\U043\U043\或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者或者0431\u044b\u043b\u043e\u043a\u0430\u043a\u043c\u043e\u0436\u043d\u043e\u0431\u043e\u043b\u044c\u0448\u0435。\r\n\n“输入规格”:\\n\n\n\n\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\n\\\n\\\\n\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
我试图像这里那样指定sure_ascii=False:,但它抛出UnicodeEncodeError:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 11-12: character maps to <undefined>
UnicodeEncodeError:“charmap”编解码器无法对位置11-12中的字符进行编码:字符映射到

总而言之,如何将字典转储到JSON文件而不破坏编码?

您需要打开指定文件编码的文件

with open('Data{0}.json'.format(1), 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False)

通过这种方式,我成功地转储了您的示例数据。

您使用的Python版本是什么?@handras 3.7.2 32bit您是如何使用
确保ascii=False
的“是使用Unicode转义码的有效JSON。它只是不可读。当您读回它时,它将是正确的。
encoding='utf-8'
不是必需的,因为在Python3
open()中,文件的读写在默认情况下都是以utf8格式完成的。”
@handras@skaul05不,这取决于操作系统和终端配置。最好是显式的并指定编码。并非所有Linux都正确配置为UTF-8,Windows终端也不使用UTF-8,尽管有些Python IDE使用UTF-8。
with open('Data{0}.json'.format(1), 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False)