Двухбайтовые числа в asp.net - PullRequest
       24

Двухбайтовые числа в asp.net

1 голос
/ 28 апреля 2009

Мы разрабатываем сайт с японской локализацией. На этом сайте мы отображаем несколько динамических полей, используя asp:label и такие элементы управления.

Недавно нам потребовалось отображать числа с использованием «двухбайтовых символов».

Хотя сначала я подумал, что это была путаница со стороны клиента, он отправил мне это по электронной почте:

1234567890
1234567890

и это показывает, что я ошибался, и что действительно есть "более широкие" числовые символы.

Любой намек на то, как заставить ASP.NET переключаться на них динамически?

Обновление : Второй пример, кажется, называется символами "FULLWIDTH". Вопрос можно перефразировать как:

Как сделать так, чтобы ASP.NET автоматически отображал числа FULLWIDTH, если текущая культура - JP?

Ответы [ 3 ]

2 голосов
/ 28 апреля 2009

По-видимому, в юникоде есть некоторые другие символы, которые выглядят так же, как «нормальные» числа, но по умолчанию отображаются шире.

Вот текст из вашего вопроса, вставленный в блокнот, сохраненный как Unicode и прошедший через XXD:

0000000: fffe 3100 3200 3300 3400 3500 3600 3700  ..1.2.3.4.5.6.7.
0000010: 3800 3900 3000 0d00 0a00 11ff 12ff 13ff  8.9.0...........
0000020: 14ff 15ff 16ff 17ff 18ff 19ff 10ff 0d00  ................
0000030: 0a00 0a                                  ...

Похоже, где '1' равно 0x0031, 'special 1' равно 0xff11. Если для отображения «нормальных» чисел используется CSS, но более широкий шрифт не подходит, я бы сказал, что вам придется взять число, преобразовать его в строку, добавить 0xff10 к каждому символу в диапазоне от 0x0030 до 0x0039. чтобы получить то, что вы ищете.

0 голосов
/ 28 апреля 2009

Вот функция для этого: -

    static string IntToWideNumbers(int n)
    {
        char[] chars = n.ToString().ToCharArray();
        for (int i = 0; i < chars.Length; i++)
        {
            chars[i] = (char)((uint)chars[i] ^ 0xFF20);
        }
        return new String(chars);
    }
0 голосов
/ 28 апреля 2009

Вы путаете ширину шрифта с DBCS . Если вы просто хотите более широкий шрифт, используйте соответствующий CSS. Если вы действительно хотите поддерживать юникод и использовать широкие символы, вам нужно реализовать свой бэкэнд, используя соответствующий тип данных.

По умолчанию все строки в C # являются Unicode. Вы можете управлять кодированием, следуя приведенным выше методам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...