J'ai un téléphone Nokia N900, et lors de l'envoi d'un SMS, le widget affiche le nombre de caractères laissés dans le message (et le nombre de messages courts réels nécessaires pour envoyer tout le message). p>
Je vis en France, où j'ai remarqué la chose étrange suivante lors de l'écriture de messages avec des caractères non ASCII: P>
Je me demande donc comment les messages sont codés, car je ne vois pas le schéma ci-dessus correspondant aux codages traditionnels que je connais (ISO-8859-1, UTF-8, UTF-16 ...). p>
3 Réponses :
https://fr.wikipedia.org/wiki/sms#message_size p>
Dépend de l'encodage, SMS peut envoyer 160/140/70 caractères. Si l'un des caractères non ASCII est utilisé, tout le message devrait être codé dans UTF-16, d'où la "consommation" que vous avez vécue. P>
Fermer, mais ce qui précède devrait lire "si l'un des caractères non-GSM-7 utilisés, l'ensemble du message devrait être codé dans UCS-2 [..]"
Vous avez déjà la réponse de @timdream, mais simplement un point supplémentaire que certains des caractères étendus que vous mentionnez sont inclus dans l'alphabet GSM 7 bits en tant que caractères simples, certains sont codés dans GSM 7-Bit par une évasion supplémentaire. caractère (deux octets pour représenter ce caractère) et certains ne peuvent pas être codés du tout en GSM 7 bits et doivent être codés comme UTF-16 à la place. P>
La définition complète de l'alphabet est ici: http://www.unicode.org/public/mappings/etsi/gsm0338.txt p>
Notez la particularité particulière avec C-Cédilla - de ce fichier, P>
L'ETSI GSM 03.38 Spécification montre un C-Cédille en majuscule glyphe à 0x09. Cela peut être le résultat d'un affichage limité Capacités pour manipuler des caractères avec des descendants. Cependant, les L'intention de la couverture linguistique est clairement pour les minuscules c-cédilla, comme indiqué dans la cartographie ci-dessous. La cartographie pour C-Cédille en majuscule est montré dans une ligne commentée dans la table de cartographie. P> blockQuote>
Certains périphériques codent à la fois en C-Cédilla en majuscules et minuscules comme le même caractère codé (0x09). P>
@vicky et @timdream ont raison, sauf que je crois que c'est techniquement UCS-2 A > et non utf-16 que le téléphone utilise parfois, qui a une taille 16 bits fixe par caractère. UTF-16 utilise une largeur variable de deux ou quatre octets par caractère, en fonction du caractère codé. Cet article Wikipedia explique cela en détail. UCS-2 prend strictement le message jusqu'à 70 caractères au plus (160 octets). Bien que La description du consortium Unicode de UCS-2 est un peu déroutant, une poignée de sites autour Le Web traitant de SMS confirme que Wikipedia a raison. P>
Je crois comprendre que UTF-16 utilise une largeur variable de 2 ou 4 octets par caractère (codes 1 ou 2 16 bits).
Merci @gurneyAlex. J'ai corrigé cela dans mon commentaire ci-dessus.
C'est intéressant. J'ai récemment fait des tests sur un iPhone et un HTC EVO 4G, les deux téléphones américains. Leur logiciel est immédiatement basculé sur UCS-2 (codage fixe de caractères à 16 bits) lorsque j'ai entré non GSM-03.38 Les caractères 7 bits tels que Í, même si ce caractère peut être codé sous forme de deux caractères GSM à 7 bits 03.38. Dans mes tests, le téléphone ne m'a pas donné cette option.