2008-11-13 2 views
1

Я планирую разработать клиентское приложение на базе Windows и приложение агностического сервера платформы. Клиентское приложение в основном отправляет сообщения серверному приложению. Клиентское приложение может отправлять сообщения на английском или других языках. Должен ли я использовать UNICODE для кодирования сообщений в моем клиентском приложении? Какова общая практика среди приложений, связанных с сетевой связью? В моем клиентском и серверном приложении будет использоваться специальный протокол для обмена сообщениями через TCP/IP. Какое кодирование UNICODE поддерживает Windows и UNIX по умолчанию? Должен ли я менять тип кодирования в моем протоколе и для декодирования сообщений UNICODE? Пожалуйста, порекомендуйте.Юникод и сетевая связь

ответ

3

Ищите UTF-8, кодирование Юникода в 8 бит байт для английского и западного языков.

Всегда рекомендуется обменять тип кодирования, если вы на более позднем этапе хотите поддержать что-то еще.

UTF-8 поддерживается всеми основными ОС и компьютерами.

+0

Действительно. Вне Windows UTF-8 - это * кодировка Unicode для использования. – 2008-11-13 05:37:01

1

Если вы контролируете как сервер, так и клиент, я бы выбрал 1 тип кодировки и придерживался его.

Я бы предложил UTF-8 (наиболее эффективный для английского и западного языков) или UTF-16 (обязательно выберите порядок байтов).

0

Вы можете использовать любую кодировку, которую хотите, вам просто нужно быть осторожным с вещами, такими как порядок байтов. Windows внутренне использует UTF-16 (little-endian), поэтому, если вы ожидаете, что большинство систем будут Windows, тогда вам, вероятно, стоит пойти на это. В противном случае я бы рекомендовал UTF-8, у которого нет проблем с байтовым порядком, о которых нужно беспокоиться.

Если вы идете с UTF-16 (или UTF-32, который я определенно хотел бы не рекомендовать), укажите в недвусмысленных выражениях, какова конечность данных на проводе. Затем для каждого клиента, который читает или записывает символ Unicode в сетевой сокет, преобразует его из собственной энтузиачности платформы в сетевую endianness - это либо не-операция, либо байтовый обмен.

Смежные вопросы