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