Я наблюдал эту проблему уже много лет, не зная, откуда она взялась.Я обеспокоен тем, что эта ошибка все еще наблюдается в новых версиях Android в 2011 году, и я надеюсь, что вы, наконец, сможете помочь мне полностью понять ее, если не решите ее.
Давайте рассмотрим данное (реальное)ситуация.Мистер "А" использует собственное приложение SMS / MMS от Sony на своей Xperia Arc (официальная версия 2.3.3).Мистер Б использует приложение стека SMS / MMS для Android на своем Milestone (Cyanogen 6.12, неофициальный 2.2).Оба они используют Android по-французски (если это имеет значение).
Когда A отправляет SMS-сообщение на B, содержащее специальные символы, такие как «ç», «ê», B получает сообщение, в котором эти символы заменяются пробелом.Символы вроде "é" работают нормально, хотя.Когда B отправляет смс A, все работает нормально.Когда А отправляет это смс самому себе, все работает нормально.
Вывод: это не ошибка мобильного провайдера, так как он работает одним и другим способом.
Итак, сначала я догадался, что с пользовательским приложением A что-то не так.Заменил на него апк с телефона Б.Все осталось прежним.Я декомпилировал приложение и не нашел, где было выполнено кодирование строки sms.Я пришел к выводу, что ошибка связана не с приложением, а с тем, как Android кодирует строки ...
Я провел еще один тест: я написал смс только со стандартными символами, что-то вроде 250 символов за 1,5 смс.Затем я добавляю "ç" к смс.На телефоне А: счетчик говорит, что он потребляет 10 символов.На телефоне B: счетчик говорит, что смс теперь принимает 3 смс: размер строки удвоился!
Вывод: На телефоне А кодировка по умолчанию содержит «ç».На телефоне B, когда появляется «ç», кодировка меняется, и каждому символу требуется вдвое больше места.(Или я что-то упустил?)
Вопросы: Почему разные версии Android не используют одну и ту же кодировку по умолчанию?На Android эти кодировки по умолчанию зависят, например, от rom?Можем ли мы настроить / изменить эти кодировки где-нибудь (в меню или непосредственно на рутированном телефоне)?Есть ли другой простой способ исправить это?
Любая помощь, объяснение или опыт приветствуются:)