проверьте, будет ли работать функция верхнего регистра

Как я могу определить, что функция ToUpper() возможна в этой строке? Например, когда язык ввода не имеет верхнего регистра. У меня есть это :

String text = "لان يقوم غينيا انتصا";

Console.WriteLine(text.ToUpper(CultureInfo.CurrentUICulture));

и вывод: "???? ????? ????"

Я попробовал это Console.WriteLine(text.ToUpper(new CultureInfo("ar")));, но результат такой же, как и раньше.


person Neyoh    schedule 16.05.2016    source источник
comment
Console.WriteLine(text) печатает символы? Я думал, что ToUpper игнорирует несопоставленные символы. Другими словами, возможно, в вашем окне консоли нет шрифта или локали для правильного отображения этой строки.   -  person payo    schedule 16.05.2016
comment
Проблема не в ToUpper(). Дополнительную информацию см. здесь.   -  person Matthew Watson    schedule 16.05.2016
comment
Когда я запускаю это в LinqPad, он работает, как и ожидалось.   -  person Cam Bruce    schedule 16.05.2016
comment
@CamBruce Попробуйте в консольном приложении; это не сработает.   -  person Matthew Watson    schedule 16.05.2016
comment
Я попробовал на dotnetfiddle.net, и это работает :)   -  person Neyoh    schedule 16.05.2016
comment
@Neyoh Вам действительно нужно, чтобы это работало в консоли? Вы будете в мире боли, потому что консоль не поддерживает языки с письмом справа налево!   -  person Matthew Watson    schedule 16.05.2016
comment
Чтобы доказать, что проблема не в .ToUpper(), простое выполнение Console.WriteLine(text); точно таким же образом не работает.   -  person Scott Chamberlain    schedule 16.05.2016


Ответы (1)


Все правильно, кроме твоего текста. Консоль может печатать только символы ASCII. Таблица всех символов, которые вы можете использовать: http://www.asciitable.com Это связано с тем, что шрифт, который использует консоль. Если вы замените несовместимый шрифт на совместимый, он будет работать.

person Community    schedule 16.05.2016