Показать сообщение отдельно
Старый 23.07.2009, 12:53   #6 (permalink)
VedebellO
Member
 
Аватар для VedebellO
 
Регистрация: 13.05.2008
Сообщений: 719
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 278
По умолчанию

Короче, вот что нашел:

Итак, все наверняка хоть раз получали сообщения в ICQ, которые не могли прочитать по причине полной кракозяберности оных. У меня такие проблемы встречаются чаще чем у других. Почему? — Из-за принципиальной позиции по поводу используемой кодировки. Дело в том, что моя основная операционная система - линукс, локаль в которой UTF-8. У этой кодировки есть много преимуществ, описывать которые я сейчас не стану, но именно ими и продектовано мое желание не использовать другую кодировку (а также тем, что у меня вся ОС работает в UTF-8).

Почему же в неправильной кодировке приходят не все сообщения, а лишь некоторые?
А потому, что у протокола ICQ есть одна серьезная проблема - он может использовать разные кодировки. На первый взгляд в этом нет ничего плохого, но давайте попытаемся разобраться к чему это приводит:
  1. Перед отправкой сообщения клиенты «договариваются» между собой в какой кодировке они будут отправлять сообщения. На этом этапе никаких проблем не возникает— все клиенты могут перекодировать в нужную кодировку, а большинство современных вообще поддерживает Unicode (причем именно в форме UTF-8 - вообще для представления Unicode-а есть куча разных форм)
  2. А у кого спросить в какой кодировке отправлять сообщения, если клиент не в сети? Т.н. offline-сообщения каждый клиент отправляет в той кодировке, в которой ему вздумается, как правило в кодировке которая установлена в настройках, или в кодировке ОС.
  3. С приемом offline-сообщений та же самая проблема - клиент не знает как показывать пришедшее ему сообщени и показывает что попало ...
  4. Проблемы с кракозябрами возникают еще и в том случае, если одна из сторон находится в режиме «невидимый для всех» - тогда она просто не отвечает на запросы, или если одна из сторон не авторизована у другой стороны - в таком случае запросы тоже игнорируются.
Возможны также варианты когда в обменах между клиентами, в качестве посредника участвует сервер, но сильно это дела не меняет - результат все тот же — кракозябры.

Теперь немного о том почему я не хочу написать в настройках своего клиента кодировку CP1251 (или Windows-1251).
Просто по тому, что количество людей в моем контакт-листе, у которых клиенты по умолчанию шлют в UTF-8 тоже не очень маленькое, т.е. если настрою на CP-1251 то не смогу получать оффлайн сообщения от другой половины людей в контакт-листе ...


Для выправления кодировки есть отличное средство (на случай, если уж так важно что там написано): http://www.artlebedev.ru/tools/decoder/
VedebellO вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070