К сожалению, нет, он должен поддерживать этот размер. У нас была такая же проблема. Хотелось бы дать вам более полный ответ, однако для точного профилирования рендеринга кажется разумным, чтобы он поддерживал соотношение пикселей 1 к 1, в противном случае пришлось бы подбирать пиксели, что приводит к неправильному профилированию.
Обновление
Это больше не правильный ответ.
Если вы используете ChrW (149) вы получите другой результат - 63, такой же, как в C #.
Dim b As Char() = {ChrW(149)}
Console.WriteLine(Encoding.Default.GetBytes(b)(0))
Прочтите документацию , чтобы увидеть разницу - это объяснит ответ
Кодировка по умолчанию зависит как от машины, так и от потока, поскольку использует текущую кодовую страницу. Обычно вам следует использовать что-то вроде Encoding.UTF8, чтобы не беспокоиться о том, что происходит, когда одна машина использует Unicode, а другая - 1252-ANSI.
Функция VB Chr принимает аргумент в диапазоне от 0 до 255 и преобразует его в символ, используя текущую кодовую страницу по умолчанию. Он вызовет исключение, если вы передадите аргумент за пределами этого диапазона.
ChrW примет 16-битное значение и вернет соответствующее значение System.Char без использования кодировки - следовательно, даст тот же результат, что и опубликованный вами код C # .
Приблизительный эквивалент вашего кода VB на C # без использования класса VB Strings (который содержит Chr и ChrW) будет выглядеть так:
char[] chars = Encoding.Default.GetChars(new byte[] { 149 });
Console.Write(Encoding.Default.GetBytes(chars)[0]);
Различные операционные системы могут использовать разные кодировки по умолчанию. Следовательно, данные, передаваемые из одного операционная система в другую может быть переведено неправильно. Чтобы гарантировать, что закодированные байты декодируются правильно, ваше приложение должно использовать кодировка Unicode, то есть UTF8Encoding, UnicodeEncoding или UTF32Encoding с преамбулой. Другой вариант - использовать протокол более высокого уровня, чтобы гарантировать, что тот же формат используется для кодирования и декодирование.
из http://msdn.microsoft.com/en-us/library/system.text.encoding.default.aspx
можете ли вы проверить, что производит каждый язык при явном кодировании с использованием utf8?
Я считаю, что эквивалент в VB - ChrW (149).
Итак, этот код VB ...
Dim c As Char() = New Char() { Chr(149) }
'Dim c As Char() = New Char() { ChrW(149) }
Dim b As Byte() = System.Text.Encoding.Default.GetBytes(c)
Console.WriteLine("{0}", Convert.ToInt32(c(0)))
Console.WriteLine("{0}", CInt(b(0)))
дает тот же результат, что и этот код C # ...
var c = new char[] { (char)149 };
var b = System.Text.Encoding.Default.GetBytes(c);
Console.WriteLine("{0}", (int)c[0]);
Console.WriteLine("{0}", (int) b[0]);