C#:如何在一个文件中读取像 'éóú' 和 öäü 这样的字符?

C#: How can I read characters like 'éóú' and öäü in one file?

我正在为我的项目创建一个语言系统,您可以在其中轻松地将 {language}.json 添加到 lang-folder,并且该程序包含该语言。

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

当我将编码更改为 Encoding.UTF8 时,法语显示正确,但随后德语 äöü 字符被替换为 �。所以句子 "Wählen Sie die Excel" 现在读作 "W�hlen Sie die Excel".

我用 for 循环试过这个:

var encoding = System.Text.Encoding.Default;

for (int i = 1; i <= 2; i++)
{
    switch (i)
    {
        case 1:
            encoding = System.Text.Encoding.UTF8;
            break;

        case 2:
            encoding = System.Text.Encoding.Unicode;
            break;

        default:
            encoding = System.Text.Encoding.Default;
            break;
    }

// Below I try to create an object of the JSON
…
}

但这并没有解决我的问题,因为 for 循环是针对中文符号之类的字符,其中 JsonConvert 如果不是 Unicode 则有问题。

我不想说 "if the language is French, encode in UTF8; if it's Chinese, use Unicode; etc.",因为语言都是可选的,因此,您不需要 fr-fr.json。但是如果你创建一个ru-ru.json,比如,你又需要Unicode。

有没有办法检测文本的最佳编码?其次,是否有一种编码可以同时提供 äöüéóúá…,这样我就不需要为每种有问题的语言手动更改它?

问题是您的文本编辑器将您的 fr-fr.json 保存为 UTF-8,将您的 de-de.json 保存为 Latin-1(在您的系统上又名 "Default")。

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

如何将 JSON 文件保存为 UTF-8 格式?这取决于您的文本编辑器。例如在记事本中,"Save As"window.

底部有一个"Encoding"下拉框