Веб-сайт использует текущую культуру пользователя для отображения данных. Проблема возникла, когда пользователь из Вьетнама получил доступ к данным. Может ли кто-нибудь объяснить, почему возникают эти проблемы?
Код для воспроизведения ошибки:
static void SortedDicProblem(Action Write)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
const string key = "KH";
SortedDictionary laCountries = new()
{
{ key, "Kambodscha " },
{ "KI", "Kiribati " },
{ "KM", "Komoren " },
};
foreach (CultureInfo loCult in System.Globalization.CultureInfo.GetCultures(CultureTypes.InstalledWin32Cultures))
{
Test(loCult.Name);
}
void Test(string vsCulture)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(vsCulture);
if (laCountries.TryGetValue(key, out string lsName))
{
Write($"{vsCulture}");
}
else
{
Write($"{vsCulture}, Key not found: {key}, {Thread.CurrentThread.CurrentCulture.EnglishName}");
}
}
}
Мы знаем, как это решить, но в чем причина этой ошибки?
Решение, позволяющее избежать проблемы: создайте экземпляр SortedDictionary с помощью StringComparer, например:
р>
new SortedDictionary(StringComparer.Ordinal)
Подробнее здесь: https://stackoverflow.com/questions/790 ... balization
Проблема с SortedDictionary в C# 11 с .NET 4.8/глобализация ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение