C#:如何在一个文件中读取像 'éóú' 和 öäü 这样的字符?
C#: How can I read characters like 'éóú' and öäü in one file?
我正在为我的项目创建一个语言系统,您可以在其中轻松地将 {language}.json
添加到 lang-folder
,并且该程序包含该语言。
目前我有德语和英语 json
文件,分别命名为 en-us.json
和 de-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"下拉框
我正在为我的项目创建一个语言系统,您可以在其中轻松地将 {language}.json
添加到 lang-folder
,并且该程序包含该语言。
目前我有德语和英语 json
文件,分别命名为 en-us.json
和 de-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"下拉框