Проблема с кодировкой: vbscript "Chr ()" для .Net C # - PullRequest
0 голосов
/ 16 июля 2009

Я не могу найти ответ на этот вопрос.

Кажется, что я должен быть в состоянии перейти от числа к символу в C #, просто делая что-то вроде (char) MyInt, чтобы дублировать поведение функции Chb () vb; Однако это не так:

В VB Script со страницей asp, если мой код говорит это:

Response.Write(Chr(139))

Это выводит это:

‹ (character code 8249)

Против этого:

(код символа 139)

Я что-то упускаю в кодировке, но не могу найти. Какую кодировку использует Chr ()?

Ответы [ 3 ]

6 голосов
/ 16 июля 2009

Chr() использует системную кодировку по умолчанию, я полагаю - так что примерно эквивалентно:

byte[] bytes = new byte[] { 139 };
char c = Encoding.Default.GetString(bytes)[0];

На моем компьютере (Windows CP1252 по умолчанию), который действительно дает Unicode 8249.

2 голосов
/ 16 июля 2009

Если вы хотите вызвать то, что в точности соответствует поведению VB Chr из C #, то почему бы просто не вызвать его, а не пытаться определить его поведение?

Просто поставьте «используя Microsoft.VisualBasic;» в верхней части вашей программы на C # добавьте библиотеку времени выполнения VB в ваши ссылки и перейдите в город.

1 голос
/ 16 июля 2009

Если вы приведете int к char, вы получите символ с кодом Unicode, который был в целом числе. Тип данных char - это просто 16-битный код символа UTF-16.

Чтобы получить эквивалент функции VBScript chr () в .NET, вам понадобится что-то вроде:

string s = Encoding.Default.GetString(new byte[]{ 139 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...