Это поведение определено в документации команды Chr
:
Возвращаемое значение зависит от кодовой страницы для текущего потока, которая содержится вСвойство ANSICodePage класса TextInfo в пространстве имен System.Globalization.Вы можете получить ANSICodePage, указав System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage.
Таким образом, вывод Chr
для значений больше 127 зависит от системы.Если вам нужны воспроизводимые результаты, создайте требуемый экземпляр Encoding
, вызвав Encoding.GetEncoding (String) , затем используйте Encoding.GetChars (Byte ()) для преобразования числовых значенийв символы.
Если вы поднимитесь на один уровень в диаграмме, связанной с вашим вопросом, вы увидите, что они не утверждают, что эта диаграмма всегда является результатом команды Chr
:
Символы, которые появляются в Windows выше 127, зависят от выбранной гарнитуры.
Диаграммы в этом разделе показывают набор символов по умолчанию для консольного приложения.
Ваше приложение является приложением WinForm, а не консольным приложением.Даже в консоли используемый набор символов можно изменить (например, с помощью команды chcp
), отсюда и слово «default».
Для получения подробной информации о кодировках, используемых в .net, ярекомендуем следующую статью MSDN: Кодировка символов в .NET Framework .