набор символов vb.net - PullRequest
       46

набор символов vb.net

4 голосов
/ 16 ноября 2010

Согласно MSDN vb.net использует этот расширенный набор символов .По моему опыту, он на самом деле использует это:

alt text

  1. Чего мне не хватает?Почему говорится, что он использует один и использует другой?
  2. Я что-то не так делаю?
  3. Есть ли какой-то инструмент преобразования в исходный набор символов?

Ответы [ 3 ]

6 голосов
/ 16 ноября 2010

Это поведение определено в документации команды 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 .

2 голосов
/ 16 ноября 2010

Первый набор символов - это кодовая страница 437 (CP437), второй выглядит как кодовая страница 1252 (CP1252), также известная как Windows Latin-1.

Я думаю, VB.Net просто подхватываеткодировка по умолчанию для ПК.

1 голос
/ 16 ноября 2010

Как ты все это написал?Потому что обычно, когда вы используете функцию потока вывода, вы можете указать кодировку, идущую вместе с ней.

Редактировать: я знаю, что это не C #, но вы можете увидеть идею ...

Вам нужно установить кодировку вашего файлового потока, выполнив что-то вроде этого: Установка кодировки при создании файлового потока

...