SMS-Nachrichten, die nicht-ASCII-Zeichen-Kodierung
Ich habe ein Nokia N900 Handy, und wenn das senden einer SMS, das widget zeigt die Anzahl der verbleibenden Zeichen in der Nachricht (und die Zahl der tatsächlichen kurz-Nachrichten senden mussten, wird die gesamte Nachricht).
Ich Lebe in Frankreich, wo mir Folgendes aufgefallen sonderbare Sache, wenn das schreiben von Nachrichten mit nicht-ASCII-Zeichen:
- einige nicht-ASCII-Zeichen sind codiert auf einem char/byte , z.B. "é", "è", "à", "ù"
- die Anwesenheit von nicht-ASCII-chars wie z.B. "ç", "ê", "ô" verbraucht ein Betrag von 90 char/bytes + 1 byte pro Zeichen
- die Anwesenheit eines zweiten "ç", "ê", etc. verbraucht nur 1 zusätzliches byte.
So Frage ich mich, wie die Nachrichten kodiert sind, denn ich kann nicht sehen die obigen Schema-matching der traditionellen Codierungen die ich kenne (iso-8859-1, UTF-8, UTF-16,...) mit.
- Das ist interessant. Ich habe vor kurzem einige Tests auf einem iPhone und einem HTC EVO 4G, die beide US-Handys. Ihre software sofort geschaltet UCS-2 (fixed 16-bit-pro-Zeichen-Kodierung), wenn ich in nicht GSM-03.38 7-bit - Zeichen wie í, obwohl dieses Zeichen kann kodiert werden, als zwei 7-bit GSM-03.38-Zeichen. In meinen tests, das Telefon hat mir keine andere Wahl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
https://en.wikipedia.org/wiki/SMS#Message_size
Hängt von der Codierung kann SMS senden 160/140/70 Zeichen. Wenn alle der nicht-ASCII-chars verwendet werden, wird die gesamte Nachricht codiert in UTF-16, damit der "Konsum", die Sie erlebt.
@Vicky und @timdream Recht, außer, dass ich glaube, dass es technisch UCS-2 und nicht UTF-16, dass das Telefon manchmal verwendet, dem eine Feste 16-bit-Größe pro Charakter. UTF-16 verwendet eine variable Breite von zwei oder vier Byte pro Zeichen, je nach dem Charakter, das kodiert wird. Dieser Wikipedia-Artikel erklärt diese im detail. UCS-2 streng nimmt die Nachricht bis 70 Zeichen, bei den meisten (160 bytes). Obwohl das Unicode Consortium Beschreibung der UCS-2 ist ein bisschen verwirrend, eine Handvoll von Websites rund um das web den Umgang mit SMS bestätigen, dass Wikipedia Recht hat.
Haben Sie bereits die Antwort von @timdream, aber nur ein weiterer Punkt, den einige der erweiterten Zeichen, die Sie erwähnen sind in den GSM-7-bit-alphabet als einzelne Buchstaben, einige sind codiert im GSM-7-bit durch eine zusätzliche escape-Zeichen (also zwei bytes zur Darstellung, dass der Charakter) und einige können nicht codiert werden bei allen GSM-7-bit-und die müssen codiert als UTF-16 statt.
Den vollständigen alphabet-definition ist hier:
http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT
Beachten Sie die Besondere Eigentümlichkeit, die mit c-Cedille - aus dieser Datei,
Einige Geräte codieren beiden oberen und unteren Rechtssache c-Cedille als die gleichen codierten Zeichen (0x09).