c#将韩语字符串保存到文件,而不是utf格式字符串
有一个类,数据。 数据有一个成员“name”,其中包含韩语字符串 我使用System.Text.json创建json字符串c#将韩语字符串保存到文件,而不是utf格式字符串,c#,json,system.text.json,C#,Json,System.text.json,有一个类,数据。 数据有一个成员“name”,其中包含韩语字符串 我使用System.Text.json创建json字符串 JsonSerializer.Serialize<Data>(data, opt); json的一部分是 “名称”:“\uC0BC\uC131\uC804\uAE30” 但是Json字符串我想要的是 “名称”:“삼성전기“ 我试过了 File.WriteAllText(filePath, jsonstring, Encoding.Unicode) File.W
JsonSerializer.Serialize<Data>(data, opt);
json的一部分是
“名称”:“\uC0BC\uC131\uC804\uAE30”
但是Json字符串我想要的是
“名称”:“삼성전기“
我试过了
File.WriteAllText(filePath, jsonstring, Encoding.Unicode)
File.WriteAllText(filePath, jsonstring, Encoding.Default)
但文件内容的格式是\uxxx
如何按原样将韩语字符串保存到文件中
(作为参考)
当我试图找到解决方案(针对C#)时,我在Python中找到了函数(json.dumps)
通过使用它,我可以得到我想要的结果
(示例)
您可能想要的是-从一开始:
opt.Encoder=JavaScriptEncoder.UnasseredJSonescaping;
(显然,不要经常更改此选项-仅设置一次;如果不同的用法需要不同的选项:使用不同的选项对象)
这使得名称
未被转义,而不是在JSON中转义。然后,您可以按照自己喜欢的方式对字符串进行编码
您还应该注意,名称unasseredJSONESCAPING
表明可能存在不希望出现这种情况的场景,因此:值得尝试了解这是什么时候以及为什么。jsonstring
中的值是什么?如果jsonstring
包含的“名称”:“\uC0BC\uC131\uC804\uAE30”
,则这就是字符串所包含的内容,并且它将始终包含该内容。你如何编码并不重要;真正的问题是:如何让JsonSerializer
不转义这些值。您能否显示生成jsonstring
的代码?注意:这可能归结为设置opt.Encoder=…
(对某些东西)看起来像的副本,同意吗?
File.WriteAllText(filePath, jsonstring, Encoding.Unicode)
File.WriteAllText(filePath, jsonstring, Encoding.Default)
import json
dict = {'555': '123'}
with open('file.txt', 'w', encoding='UTF-8') as file:
file.write(json.dumps(dict))