Ou comment se retrouver avec un gros hors forfait le premier mois sans comprendre pourquoi.

160 caractères… ou moins
Ce qu’il faut savoir c’est que les SMS sont limités à 160 caractères… jusque là rien de bien nouveau sous le soleil.

À propos des 160 caractères: des fois on dit 140 (twitter), des fois on dit 160. Pourquoi? Parce que tout simplement 160 c’est en Alphabet GSM, qui code les caractères sur 7 bits, contrairement au charset iso-8859-1(5) qui est sur 8 bits. 160*7 = 140 * 8 CQFD.
On utilisera donc un charset sur 8 bits si l’on veut des caractères comme ç ou ê (mais pas éèàÇ par exemple qui sont dans le charset GSM).

Repoussons les limites
Les réseaux permettent de chaîner les SMS et ainsi de repousser la limite de 160 caractères, en ayant des messages multiples. Les messages qui suivent sont plus petits (153 caractères) car ils ont les informations de chaînage.

Donc l’application SMS qui est dans Android supporte de chaîner jusqu’à 3 SMS, ce qui nous fait 160 + 153 + 153 = 466 caractères. Confortable non? En plus si on dépasse la limite, l’application SMS Android nous converti automatiquement le message en MMS, ce qui repousse la limite à bien plus… (25000 caractères au bas mot).

Sauf que… pour tout ce qui sort du cadre de l’alphabet GSM, l’application SMS Android encode les messages en Unicode (ou UTF-16), ce qui nous amène à 16 bits par caractère, et donc seulement 70 caractères par SMS! (67 pour les suivants). Soit 70+67+67 = 204 caractères avant de passer en MMS. Déjà beaucoup moins confortable pour taper du bon françois (ou des messages pleins de copier-coller 😉 ).

Mais où est l’arnaque?

L’arnaque est bien sûr dans le forfait Full Internet proposé par SFR qui a tout simplement enlevé les MMS illimités de son forfait… Et les facture 0,45€ par MMS. OUCH!

Voilà comment votre serviteur se retrouve avec 20€+ de hors forfait parce qu’il croyait que tout était illimité. En plus la notification qui dit que le message est automatiquement converti en MMS n’apparait qu’en mode portrait, mode que l’on utilise que pour taper des messages très courts…

En creusant plus sur internet et sur divers forums de la communauté android francophone, on trouve que SFR a une option gratuite « Pass Messages illimités » qui propose entre autre… les MMS illimités! Ni une ni deux votre serviteur fonce sur le site SFR rubrique « Mon Compte », et coche les cases qui vont bien. Mais bien sûr l’option ne sera activée qu’à partir du mois prochain…

On commence à se demander si SFR ne l’a pas fait exprès.

En attendant…
Une solution palliative est de changer d’application SMS. Votre serviteur a testé Handcent SMS, qui marche plutôt pas mal et qui demande confirmation avant de faire la fameuse conversion automatique, même en mode paysage. Quelques bugs subsistent néanmoins. Vous pouvez aussi jeter un œil du côté de chompSMS.

Du point de vue technique
Les ingénieurs de Google n’ont pas fait de choix fondamentalement mauvais: UTF-16 permet de coder presque tous les caractères connus, et cela facilite donc l’internationalisation de leur point de vue. Tout en restant conforme aux normes en vigueurs. HTC aurait par contre pu customiser le téléphone pour supporter les charset 8 bits dans les SMS pour la France.

On aurait pu également arguer que limiter à 3 SMS de suite c’est trop peu. En effet, mais cette limite est fortement dépendante du réseau. Ça pourrait marcher chez SFR, mais dans d’autres pays ou chez d’autres opérateurs. Encore un problème de customisation chez HTC/SFR.

Enfin, le choix de l’Unicode impacte directement vos correspondants. En effet, tout ceux qui n’ont pas de téléphone android recevront des messages avec des caractères bizarres genre « B@o@n@j@o@u@r@ » au lieu de « Bonjour » dès que vous écrivez en bon français (ou utilisez la complétion du dictionnaire Android).

Ces deux problèmes sont référencés sur le bug tracker d’Android:
http://code.google.com/p/android/issues/detail?id=2318
http://code.google.com/p/android/issues/detail?id=2600

Un article d’Anisse Astier