Преобразование unicode символа от байта

Возможно, вы могли бы использовать Curl -vos CDNendpoint для проверки значения server. Обычно это город с кодом IATA Location Identifier . На скриншоте ниже я получил код сервера DAA, который представляет США в Идентификаторе местоположения. Если вы обращаетесь к URL-адресу конечной точки в первый раз, она получит содержимое с исходного сервера. Вы можете снова получить доступ к конечной точке, чтобы получить ее с POP-сервера. Кэш работает, когда вы видите x-cache значение HIT. Я использую Premium Verizon CDN.

enter image description here

5
задан 17 February 2009 в 18:09
поделиться

7 ответов

Необходимо использовать Encoding.GetString, использование самого соответствующего кодирования.

Я не вполне понимаю Вашей ситуации полностью, но Encoding класс почти наверняка будет способом обработать его.

Кто управляет данными здесь? Ваш код или код Ваших клиентов? Вы определили, каков правильный формат?

Править: Хорошо, у меня был другой взгляд на Ваш код: BitConverter. ToChar возвращает "Символ, сформированный на два байта, начинающиеся в startIndex". Если Вы только хотите использовать один байт, просто бросьте его:

char c = (char) buffer[m_index];

Я удивлен, что Ваш код работал вообще, поскольку он повредил бы любое время, следующий байт был ненулевым.

6
ответ дан 14 December 2019 в 13:48
поделиться

Необходимо посмотреть на Систему. Текст. ASCIIEncoder. Функция ASCII.GetString, которая берет байт [], выстраивает, и преобразовывает его в строку (для ASCII).

И Система. Текст. UTF8Encoder или Система. Текст. UTF16Encoder для Unicode представляет в виде строки в UTF8 или кодировке UTF16.

Существуют также функции для преобразования Строк к Байту [] в ASCIIEncoding, UTF8Encoding и классах UTF16Encoding: посмотрите GetBytes (Строка) функции.

0
ответ дан 14 December 2019 в 13:48
поделиться

Символы Unicode могут взять до четырех байтов, но редко являются сообщениями, закодированными на проводе с помощью 4 байтов для каждого символа. Скорее схемы как UTF8 или UTF16 используются, которые только вводят дополнительные байты при необходимости.

Взгляните на руководство класса Кодирования.

0
ответ дан 14 December 2019 в 13:48
поделиться

Тестовые потоки должны содержать маркер порядка байтов, который позволит Вам определять, как рассматривать двоичные данные.

0
ответ дан 14 December 2019 в 13:48
поделиться

Неясно, что точно Ваша цель здесь. Из того, что я могу сказать, существует 2 маршрута, которыми можно следовать

  1. Проигнорируйте все данные, отправленные в Unicode
  2. Обработайте и unicode и строки ASCII

По моему скромному мнению, № 1 является способом пойти. Но это кажется, что Ваш протокол не, обязательно устанавливают для контакта со строкой unicode. Необходимо будет сделать некоторую логику обнаружения, чтобы определить, является ли входящая строка версией Unicode. Если это - Вы, может использовать Enconding. Unicode. Метод GetString для преобразования того конкретного массива байтов.

0
ответ дан 14 December 2019 в 13:48
поделиться

Какое кодирование Ваши клиенты используют? Если некоторые Ваши клиенты будут все еще использовать ASCII, то Вам будут нужны Ваши иностранные клиенты для использования чего-то, что отображается, ASCII установил (1-127) на себя, такие как UTF8. После этого используйте метод GetString кодирования UTF8.

0
ответ дан 14 December 2019 в 13:48
поделиться

Мое единственное решение состоит в том, чтобы зафиксировать API. Любой говорит пользователям использовать только строку ASCII в Байте [] или фиксировать его для поддержки ASCII, и любое другое кодирование Вас должно использовать.

Решение, какое кодирование предоставляется внешними клиентами от просто байта [], может быть немного хитрым.

0
ответ дан 14 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: