C#:我怎样才能读像'éóú';和öäü;在一个文件中?

C#:我怎样才能读像'éóú';和öäü;在一个文件中?,c#,json,localization,encode,C#,Json,Localization,Encode,我正在为我的项目创建一个语言系统,您可以在其中轻松地将{language}.json添加到lang文件夹,程序包括该语言 目前,我将德语和英语作为json文件,分别命名为en-us.json和de-de.json。当我为法语添加名为fr-fr.json的测试文件时,我遇到了一个问题,在正常的编码.Default中,éóú字符显示为Ã。例如,句子“Le fichier Excel est créautomatiquement:”看起来像“Le fichier Excel est crÃÃÃéau

我正在为我的项目创建一个语言系统,您可以在其中轻松地将
{language}.json
添加到
lang文件夹
,程序包括该语言

目前,我将德语和英语作为
json
文件,分别命名为
en-us.json
de-de.json
。当我为法语添加名为
fr-fr.json
的测试文件时,我遇到了一个问题,在正常的
编码.Default
中,
éóú
字符显示为
Ã
。例如,句子“Le fichier Excel est créautomatiquement:”看起来像“Le fichier Excel est crÃÃÃéautomatiquement:”

当我将编码更改为
encoding.UTF8
时,法语显示正确,但德语
äöü
字符被替换为�. 因此,“Wählen Sie die Excel”一句现在改为“W”�“你会成功的”

我用
for
循环尝试了这一点:

var encoding=System.Text.encoding.Default;

对于(int i=1;i问题在于,您的文本编辑器将您的
fr-fr.json
保存为UTF-8,将您的
de-de.json
保存为拉丁语-1(在您的系统上称为“默认”)

解决方案是将所有JSON文件保存为UTF-8(因为UTF-8可以对所有Unicode字符进行编码,并且已经成为文本文件的事实上的新标准),并且在读取文件时始终使用UTF-8


如何将JSON文件保存为UTF-8?这取决于文本编辑器。例如,在记事本中,“另存为”底部有一个“编码”下拉框窗口。

为什么不一直使用UTF-8?在输入文件中,在程序中,在终端中…最终,您需要知道文件是用什么编码编写的。如果您使用了
编码。默认值
或任何spe之类的方法,那么在编写数据时,您实际上有不可修复的损坏数据的可能性cific非unicode代码页编码。你能告诉我们文件中的字节是什么吗?这可能有助于我们确定事情。如果可能的话:总是使用已知的编码写入和读取文件-UTF-8应该是你的默认选择。UTF-8可以表示你将遇到的任何unicode字符。是的,这就解决了问题。我想知道为什么äöüb不会e包含在unicode中,我还没有检查文件itself@DudeWhoWantsToLearn:äöü包含在Unicode中。问题是äöü也包含在(更有限的)拉丁-1编码中,因此,您的文本编辑器试图帮您一个忙,并使用了(旧的)改为拉丁-1编码。@DudeWhotsToLearn:换句话说,您的文本编辑器将
ä
保存为
E4
(=拉丁-1编码的
ä
)而不是
C3 A4
(=UTF-8编码的
ä
).现在,尝试将
E4
解析为UTF-8会导致无效结果,这就是为什么会出现Unicode错误符号(aka“”):�) 相反