gnokii-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GSM SMS Charset


From: Herbert Demmel
Subject: Re: GSM SMS Charset
Date: Tue, 26 Aug 2003 09:59:12 +0200

Hi,

this is what I've found in my source code for the commercial application Cellular Essentials - see at www.demmel.com

Enjoy!
Herbert

const wchar_t GSM_default_alphabet[128] =
{
        /* ETSI GSM 03.38, version 6.0.1, section 6.2.1; Default alphabet */
        /* Characters in hex position 10, [12 to 1a] and 24 are not present on
latin1 charset, so we cannot reproduce on the screen, however they are
         Greek symbols not even present on my Nokia */

        L'@',   L'£',   L'$',   L'¥',   L'è',   L'é',   L'ù',   L'ì',   // 00
        L'ò',   L'Ç',   L'\n',  L'Ø',   L'ø',   L'\r',  L'Å',   L'å',   // 08
        0x394,  L'_',   0x3A6,  0x393,  0x39B,  0x3A9,  0x3A0,  0x3A8,  // 10
        0x3A3,  0x398,  0x39E,  L'\xA0',L'Æ',   L'æ',   L'ß',   L'É',   // 18
        L' ',   L'!',   L'"',   L'#',   L'¤',   L'%',   L'&',   L'\'',  // 20
        L'(',   L')',   L'*',   L'+',   L',',   L'-',   L'.',   L'/',   // 28
        L'0',   L'1',   L'2',   L'3',   L'4',   L'5',   L'6',   L'7',   // 30
        L'8',   L'9',   L':',   L';',   L'<',   L'=',   L'>',   L'?',   // 38
        L'¡',   L'A',   L'B',   L'C',   L'D',   L'E',   L'F',   L'G',   // 40
        L'H',   L'I',   L'J',   L'K',   L'L',   L'M',   L'N',   L'O',   // 48
        L'P',   L'Q',   L'R',   L'S',   L'T',   L'U',   L'V',   L'W',   // 50
        L'X',   L'Y',   L'Z',   L'Ä',   L'Ö',   L'Ñ',   L'Ü',   L'§',   // 58
        L'¿',   L'a',   L'b',   L'c',   L'd',   L'e',   L'f',   L'g',   // 60
        L'h',   L'i',   L'j',   L'k',   L'l',   L'm',   L'n',   L'o',   // 68
        L'p',   L'q',   L'r',   L's',   L't',   L'u',   L'v',   L'w',   // 70
        L'x',   L'y',   L'z',   L'ä',   L'ö',   L'ñ',   L'ü',   L'à'    // 78
};

// Mapping from the extended Nokia character set to Unicode
// Unused/unmappable characters are set to 0xE000 (first character of the
// Private Use Area)
const wchar_t Nokia_ext_charset[256] =
{
        UNMAPPED_NCHAR, // 00
        UNMAPPED_NCHAR, // 01
        UNMAPPED_NCHAR, // 02
        UNMAPPED_NCHAR, // 03
        UNMAPPED_NCHAR, // 04
        0x0393,                 // 05 Greek Capital Letter Gamma
        0x0394,                 // 06 Greek Capital Letter Delta
        0x0398,                 // 07 Greek Capital Letter Theta
        0x039B,                 // 08 Greek Capital Letter Lamda
        0x039E,                 // 09 Greek Capital Letter Xi
        0x000A,                 // 0A   Carriage Return is still here!
        0x03A0,                 // 0B Greek Capital Letter Pi
        UNMAPPED_NCHAR, // 0C
        UNMAPPED_NCHAR, // 0D
        0x03A3,                 // 0E Greek Capital Letter Sigma
        0x03A6,                 // 0F Greek Capital Letter Phi
        0x03A8,                 // 10 Greek Capital Letter Psi
        0x03A9,                 // 11 Greek Capital Letter Omega
        UNMAPPED_NCHAR, // 12
        0x0420,                 // 13 Cyrillic Capital Letter Er
        0x0106,                 // 14 Latin Capital Letter C With Acute
        0x0421,                 // 15 Cyrillic Capital Letter Es
        0x0107,                 // 16 Latin Small Letter C With Acute
        0x0422,                 // 17 Cyrillic Capital Letter Te
        0x0423,                 // 18 Cyrillic Capital Letter U
        0x0424,                 // 19 Cyrillic Capital Letter Ef
        0x0425,                 // 1A Cyrillic Capital Letter Ha
        0x0426,                 // 1B Cyrillic Capital Letter Tse
        0x0427,                 // 1C Cyrillic Capital Letter Che
        0x0428,                 // 1D Cyrillic Capital Letter Sha
        0x0429,                 // 1E Cyrillic Capital Letter Shcha
        0x010C,                 // 1F Latin Capital Letter C With Caron
        L' ',                   // 20
        L'!',                   // 21
        L'"',                   // 22
        L'#',                   // 23
        L'$',                   // 24
        L'%',                   // 25
        L'&',                   // 26
        L'\'',          // 27
        L'(',                   // 28
        L')',                   // 29
        L'*',                   // 2A
        L'+',                   // 2B
        L',',                   // 2C
        L'-',                   // 2D
        L'.',                   // 2E
        L'/',                   // 2F
        L'0',                   // 30
        L'1',                   // 31
        L'2',                   // 32
        L'3',                   // 33
        L'4',                   // 34
        L'5',                   // 35
        L'6',                   // 36
        L'7',                   // 37
        L'8',                   // 38
        L'9',                   // 39
        L':',                   // 3A
        L';',                   // 3B
        L'<',                   // 3C
        L'=',                   // 3D
        L'>',                   // 3E
        L'?',                   // 3F
        L'@',                   // 40
        L'A',                   // 41
        L'B',                   // 42
        L'C',                   // 43
        L'D',                   // 44
        L'E',                   // 45
        L'F',                   // 46
        L'G',                   // 47
        L'H',                   // 48
        L'I',                   // 49
        L'J',                   // 4A
        L'K',                   // 4B
        L'L',                   // 4C
        L'M',                   // 4D
        L'N',                   // 4E
        L'O',                   // 4F
        L'P',                   // 50
        L'Q',                   // 51
        L'R',                   // 52
        L'S',                   // 53
        L'T',                   // 54
        L'U',                   // 55
        L'V',                   // 56
        L'W',                   // 57
        L'X',                   // 58
        L'Y',                   // 59
        L'Z',                   // 5A
        L'[',                   // 5B
        L'\\',          // 5C
        L']',                   // 5D
        L'^',                   // 5E
        L'_',                   // 5F
        L'`',                   // 60
        L'a',                   // 61
        L'b',                   // 62
        L'c',                   // 63
        L'd',                   // 64
        L'e',                   // 65
        L'f',                   // 66
        L'g',                   // 67
        L'h',                   // 68
        L'i',                   // 69
        L'j',                   // 6A
        L'k',                   // 6B
        L'l',                   // 6C
        L'm',                   // 6D
        L'n',                   // 6E
        L'o',                   // 6F
        L'p',                   // 70
        L'q',                   // 71
        L'r',                   // 72
        L's',                   // 73
        L't',                   // 74
        L'u',                   // 75
        L'v',                   // 76
        L'w',                   // 77
        L'x',                   // 78
        L'y',                   // 79
        L'z',                   // 7A
        L'{',                   // 7B
        L'|',                   // 7C
        L'}',                   // 7D
        L'~',                   // 7E
        UNMAPPED_NCHAR, // 7F
        0x0430,                 // 80 Cyrillic Small Letter A
        0x0431,                 // 81 Cyrillic Small Letter Be
        0x0432,                 // 82 Cyrillic Small Letter Ve
        0x0433,                 // 83 Cyrillic Small Letter Ghe
        0x0434,                 // 84 Cyrillic Small Letter De
        0x0435,                 // 85 Cyrillic Small Letter Ie
        0x0436,                 // 86 Cyrillic Small Letter Zhe
        0x0437,                 // 87 Cyrillic Small Letter Ze
        0x0438,                 // 88 Cyrillic Small Letter I
        0x0439,                 // 89 Cyrillic Small Letter Short I
        0x00C0,                 // 8A Latin Capital Letter A With Grave
        0x00C1,                 // 8B Latin Capital Letter A With Acute
        0x00C2,                 // 8C Latin Capital Letter A With Circumflex
        0x00C3,                 // 8D Latin Capital Letter A With Tilde
        0x011E,                 // 8E Latin Capital Letter G With Breve
        0x043A,                 // 8F Cyrillic Small Letter Ka
        0x011F,                 // 90 Latin Small Letter G With Breve
        0x043B,                 // 91 Cyrillic Small Letter El
        0x043C,                 // 92 Cyrillic Small Letter Em
        0x043D,                 // 93 Cyrillic Small Letter En
        0x00C8,                 // 94 Latin Capital Letter E With Grave
        0x043E,                 // 95 Cyrillic Small Letter O
        0x043F,                 // 96 Cyrillic Small Letter Pe
        0x00CA,                 // 97 Latin Capital Letter E With Circumflex
        0x00CB,                 // 98 Latin Capital Letter E With Diaeresis
        0x00CC,                 // 99 Latin Capital Letter I With Grave
        0x00CD,                 // 9A Latin Capital Letter I With Acute
        0x0440,                 // 9B Cyrillic Small Letter Er
        0x00CE,                 // 9C Latin Capital Letter I With Circumflex
        0x0441,                 // 9D Cyrillic Small Letter Es
        0x00CF,                 // 9E Latin Capital Letter I With Diaeresis
        0x0442,                 // 9F Cyrillic Small Letter Te
        0x0443,                 // A0 Cyrillic Small Letter U
        0x00A1,                 // A1 Inverted Exclamation Mark
        0x0444,                 // A2 Cyrillic Small Letter Ef
        0x00A3,                 // A3 Pound Sign
        0x00A4,                 // A4 Currency Sign
        0x00A5,                 // A5 Yen Sign
        0x0445,                 // A6 Cyrillic Small Letter Ha
        0x00A7,                 // A7 Section Sign
        0x0446,                 // A8 Cyrillic Small Letter Tse
        0x0447,                 // A9 Cyrillic Small Letter Che
        0x0448,                 // AA Cyrillic Small Letter Sha
        0x0449,                 // AB Cyrillic Small Letter Shcha
        0x00D2,                 // AC Latin Capital Letter O With Grave
        0x00D3,                 // AD Latin Capital Letter O With Acute
        0x00D4,                 // AE Latin Capital Letter O With Circumflex
        0x044A,                 // AF Cyrillic Small Letter Hard Sign
        0x00D5,                 // B0 Latin Capital Letter O With Tilde
        0x044B,                 // B1 Cyrillic Small Letter Yeru
        0x044C,                 // B2 Cyrillic Small Letter Soft Sign
        0x044D,                 // B3 Cyrillic Small Letter E
        0x044E,                 // B4 Cyrillic Small Letter Yu
        0x00D9,                 // B5 Latin Capital Letter U with Grave
        0x044F,                 // B6 Cyrillic Small Letter Ya
        0x0130,                 // B7 Latin Capital Letter I With Dot Above
        0x0131,                 // B8 Latin Small Letter Dotless I
        0x00DA,                 // B9 Latin Capital Letter U With Acute
        0x00DB,                 // BA Latin Capital Letter U With Circumflex
        0x00E1,                 // BB Latin Small Letter A With Acute
        0x00E2,                 // BC Latin Small Letter A With Circumflex
        0x00E3,                 // BD Latin Small Letter A With Tilde
        0x00E7,                 // BE Latin Small Letter C With Cedilla
        0x00BF,                 // BF Inverted Question Mark
        0x00EA,                 // C0 Latin Small Letter E With Circumflex
        0x00EB,                 // C1 Latin Small Letter E With Diaeresis
        0x00ED,                 // C2 Latin Small Letter I With Acute
        0x00EE,                 // C3 Latin Small Letter I With Circumflex
        0x00C4,                 // C4 Latin Capital Letter A With Diaeresis
        0x00C5,                 // C5 Latin Capital Letter A With Ring Above
        0x00C6,                 // C6 Latin Capital Letter Ae
        0x00C7,                 // C7 Latin Capital Letter C With Cedilla
        0x00EF,                 // C8 Latin Small Letter I With Diaeresis
        0x00C9,                 // C9 Latin Capital Letter E With Acute
        0x00F3,                 // CA Latin Small Letter O With Acute
        0x00F4,                 // CB Latin Small Letter O With Circumflex
        0x00F5,                 // CC Latin Small Letter O With Tilde
        0x00FA,                 // CD Latin Small Letter U With Acute
0x0152, // CE Latin Capital Ligature Oe (Windows: 0x8C)
        0x00FB,                 // CF Latin Small Letter U With Circumflex
        0x0153,                 // D0 Latin Small Ligature Oe (Windows: 0x9C)
        0x00D1,                 // D1 Latin Capital Letter N With Tilde
        0x00FD,                 // D2 Latin Small Letter Y With Acute
        0x20AC,                 // D3 Euro Sign (Windows: 0x80)
0x0160, // D4 Latin Capital Letter S With Caron (Windows: 0x8A) 0x0161, // D5 Latin Small Letter S With Caron (Windows: 0x9A)
        0x00D6,                 // D6 Latin Capital Letter O With Diaeresis
        0x0410,                 // D7 Cyrillic Capital Letter A
        0x00D8,                 // D8 Latin Capital Letter O With Stroke
        0x0411,                 // D9 Cyrillic Capital Letter Be
        0x0412,                 // DA Cyrillic Capital Letter Ve
        0x0413,                 // DB Cyrillic Capital Letter Ghe
        0x00DC,                 // DC Latin Capital Letter U With Diaeresis
        0x0414,                 // DD Cyrillic Capital Letter De
        0x0415,                 // DE Cyrillic Captial Letter Ie
        0x00DF,                 // DF Latin Small Letter Sharp S
        0x00E0,                 // E0 Latin Small Letter A With Grave
        0x0416,                 // E1 Cyrillic Capital Letter Zhe
        0x0417,                 // E2 Cyrillic Capital Letter Ze
        0x0418,                 // E3 Cyrillic Capital Letter I
        0x00E4,                 // E4 Latin Small Letter A With Diaeresis
        0x00E5,                 // E5 Latin Small Letter A With Ring Above
        0x00E6,                 // E6 Latin Small Letter Ae
        0x0419,                 // E7 Cyrillic Capital Letter Short I
        0x00E8,                 // E8 Latin Small Letter E With Grave
        0x00E9,                 // E9 Latin Small Letter E With Acute
        0x041A,                 // EA Cyrillic Capital Letter Ka
        0x041B,                 // EB Cyrillic Capital Letter El
        0x00EC,                 // EC Latin Small Letter I With Grave
        0x041C,                 // ED Cyrillic Capital Letter Em
        0x041D,                 // EE Cyrillic Capital Letter En
        0x041E,                 // EF Cyrillic Capital Letter O
        0x041F,                 // F0 Cyrillic Capital Letter Pe
        0x00F1,                 // F1 Latin Small Letter N With Tilde
        0x00F2,                 // F2 Latin Small Letter O With Grave
0x017D, // F3 Latin Capital Letter Z With Caron (Windows: 0x8E) 0x017E, // F4 Latin Small Letter Z With Caron (Windows: 0x9E)
        UNMAPPED_NCHAR, // F5
        0x00F6,                 // F6 Latin Small Letter O With Diaeresis
        UNMAPPED_NCHAR, // F7
        0x00F8,                 // F8 Latin Small Letter O With Stroke
        0x00F9,                 // F9 Latin Small Letter U With Grave
        UNMAPPED_NCHAR, // FA
        UNMAPPED_NCHAR, // FB
        0x00FC,                 // FC Latin Small Letter U With Diaeresis
        UNMAPPED_NCHAR, // FD
        UNMAPPED_NCHAR, // FE
        UNMAPPED_NCHAR          // FF
};

At 09:41 26.08.2003 +0200, you wrote:
>>> address@hidden 20 August 2003 23:03:59 >>>
> I have a problem with the gsm charset.
> I've looked at:
> gnokii-0.5.2/common/gsm-encoding.c
> perl-5.8.0/ext/Encode/ucm/gsm0338.ucm
> http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT
>
> But I can't find most acute vowels (as used in Spanish and French):
> For example:
> U+00ED LATIN SMALL LETTER I WITH ACUTE

Are you sure, these characters are in the default alphabet? Probably
the easiest way would be to use utf8 encoding.

Oh, well I looked at the url you gave and I don't think they mention
i with acute there.

----------------------------------------------------------
demmel products
Radnitzkygasse 43
A-1100 Vienna / Austria / Europe
Voice: +43-1-6894700-0
Fax: +43-1-6894700-40
Email: address@hidden
WWW: http://www.demmel.com






reply via email to

[Prev in Thread] Current Thread [Next in Thread]