Приложение C# в японской ОС Windows - Представление латиницы как полноширинных символов
Я сослался на принятый ответ в приведенной выше ссылке и использую приведенный ниже код для преобразования японской строки из полной ширины в половину ширины, но он возвращает ту же строку полной ширины без преобразования.
string userInput = "チヨチヨチチヨチヨチ";
string result = userInput.Normalize(NormalizationForm.FormKC);
Ожидаемый результат в половину ширины: チヨチヨチチヨチヨチ Фактический вывод: チヨチヨチチヨチヨチ (полная ширина)
Однако, несмотря на то, что приведенный выше код должен преобразовывать строку полной ширины в строку половинной ширины, когда я передаю строку половинной ширины (チヨチヨチチヨチヨチ) приведенному выше коду, он преобразует ее в форму полной ширины (チヨチヨチチヨチヨチ) .
Что я здесь делаю неправильно?
В любом случае я не хочу, чтобы приведенный выше код выполнялся, если моя строка уже имеет половинную ширину.
Как я могу проверить, является ли строка половинной или полной шириной?
Normalize
не всегда преобразует полную ширину в половину ширины. Иногда он преобразует половину ширины в полную ширину. Я думаю, что для этого есть стандарт, который следует изучить. Но лучше работать со стандартами. - person Mostafa Vatanpour   schedule 22.07.2019