Юникод и сетевая связь - PullRequest
1 голос
/ 13 ноября 2008

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

Ответы [ 3 ]

3 голосов
/ 13 ноября 2008

Ищите UTF-8, кодировку Unicode в 8-битных байтах, эффективную для английского и западного языков.

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

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

1 голос
/ 13 ноября 2008

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

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

0 голосов
/ 13 ноября 2008

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

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

...