繁体   English   中英

C# JSON 西班牙文是 UTF8 但德文是 UTF7 加载

[英]C# JSON Spanish is UTF8 but German is UTF7 to load

我正在建立一个设置特定语言的网站。 所有页面及其文本都在每种语言的一个 JSON 中。 我正在使用浏览器服务器变量来判断语言是什么,如果我们有 JSON 转换,我们会以他们的语言显示文本。 如果我们不涵盖它,则默认为英语。

但是,我们使用以下代码加载数据,它适用于英语和西班牙语。

byte[] bytes = File.ReadAllBytes(JSONFilePath);
string someString = Encoding.UTF8.GetString(bytes);
RecordData = (DataSet)JsonConvert.DeserializeObject(someString, (typeof(DataSet)));

但是,我们注意到它不适用于德语。 我们发现德语必须使用 UTF7。

byte[] bytes = File.ReadAllBytes(JSONFilePath);
string someString = Encoding.UTF7.GetString(bytes);
RecordData = (DataSet)JsonConvert.DeserializeObject(someString, (typeof(DataSet)));

如果我们对德语使用 UTF8,我们会得到一些字符中的符号。 如果将 UTF7 用于西班牙语,同样的事情也会发生。 我们正在设置 10 种左右的语言,那么在反序列化之前我们如何知道用哪种语言对数据进行编码呢?

您不需要在不同的代码页中为不同的语言编码文件。 你可以,但你只会无缘无故地让你的生活变得更艰难。 您需要自己维护您选择的代码页和文件之间的映射。

Unicode涵盖所有语言。 UTF-8 支持所有 Unicode,所有 Unicode 编码也是如此。

确保始终将所有文件保存为 UTF-8,并确保在读取这些文件时始终提供编码,此时您的代码应为:

string someString = File.ReadAllText(JSONFilePath, Encoding.UTF8);
RecordData = (DataSet)JsonConvert.DeserializeObject(someString, (typeof(DataSet)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM