GSM 3.38中定义的pdu格式编码, 其中7bit的部分不光要处理常见的ascii编码, 还要处理一些欧洲字符, 这些字符不在常规的127个ascii字符中, 所以需要如下映射表做一个映射, 另有部分字符与在ascii中的位置不一致, 所以千万要注意. 网上不少山寨代码都忽略协议. 想当然的实现了所谓的pdu编码格式. 忧郁中.
                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

0

 
 

0x00

 
 

COMMERCIAL AT

 
 

@

 
 

64

 
 

0x40

 
 

1

 
 

0x01

 
 

POUND  SIGN

 
 

£

 
 

163

 
 

0xA3

 
 

2

 
 

0x02

 
 

DOLLAR SIGN

 
 

$

 
 

36

 
 

0x24

 
 

3

 
 

0x03

 
 

YEN SIGN

 
 

¥

 
 

165

 
 

0xA5

 
 

4

 
 

0x04

 
 

LATIN SMALL LETTER E WITH GRAVE

 
 

È

 
 

232

 
 

0xE8

 
 

5

 
 

0x05

 
 

LATIN SMALL LETTER E WITH ACUTE

 
 

É

 
 

233

 
 

0xE9

 
 

6

 
 

0x06

 
 

LATIN SMALL LETTER U WITH GRAVE

 
 

Ù

 
 

249

 
 

0xF9

 
 

7

 
 

0x07

 
 

LATIN SMALL LETTER I WITH GRAVE

 
 

Ì

 
 

236

 
 

0xEC

 
 

8

 
 

0x08

 
 

LATIN SMALL LETTER O WITH GRAVE

 
 

Ò

 
 

242

 
 

0xF2

 
 

9

 
 

0x09

 
 

LATIN CAPITAL LETTER C WITH CEDILLA

 
 

Ç

 
 

199

 
 

0xC7

 
 

10

 
 

0x 0A

 
 

LINE  FEED

 
 

 

 
 

10

 
 

0x 0A

 
 

11

 
 

0x0B

 
 

LATIN CAPITAL LETTER O WITH STROKE

 
 

Ø

 
 

216

 
 

0xD8

 
 

12

 
 

0x 0C

 
 

LATIN SMALL LETTER O WITH STROKE

 
 

ø

 
 

248

 
 

0xF8

 
 

13

 
 

0x0D

 
 

CARRIAGE RETURN

 
 

 

 
 

13

 
 

0x0D

 
 

14

 
 

0x0E

 
 

LATIN  CAPITAL LETTER A WITH RING ABOVE

 
 

Å

 
 

197

 
 

0xC5

 
 

15

 
 

0x 0F

 
 

LATIN SMALL LETTER A WITH RING  ABOVE

 
 

å

 
 

229

 
 

0xE5

 

 

2. 16----31

                                                                                                                                                                                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

16

 
 

0x10

 
 

GREEK CAPITAL LETTER DELTA

 
 

 
 

916

 
 

0x0394

 
 

17

 
 

0x11

 
 

LOW  LINE

 
 

_

 
 

95

 
 

0x 5F

 
 

18

 
 

0x12

 
 

GREEK CAPITAL LETTER PHI

 
 

Φ

 
 

934

 
 

0x 03A 6

 
 

19

 
 

0x13

 
 

GREEK CAPITAL LETTER GAMMA

 
 

Γ

 
 

915

 
 

0x0393

 
 

20

 
 

0x14

 
 

GREEK  CAPITAL LETTER LAMBDA                           Λ

 
 

Λ

 
 

923

 
 

0x039B

 
 

21

 
 

0x15

 
 

GREEK CAPITAL LETTER OMEGA

 
 

 
 

937

 
 

0x 03A 9

 
 

22

 
 

0x16

 
 

GREEK CAPITAL LETTER PI

 
 

Π

 
 

928

 
 

0x 03A 0

 
 

23

 
 

0x17

 
 

GREEK CAPITAL LETTER PSI

 
 

Ψ

 
 

936

 
 

0x 03A 8

 
 

24

 
 

0x18

 
 

GREEK CAPITAL LETTER SIGMA

 
 

Σ

 
 

931

 
 

0x 03A 3

 
 

25

 
 

0x19

 
 

GREEK CAPITAL LETTER THETA

 
 

Θ

 
 

920

 
 

0x0398

 
 

26

 
 

0x 1A

 
 

GREEK CAPITAL LETTER XI

 
 

Ξ

 
 

926

 
 

0x039E

 
 

27

 
 

0x1B

 
 

ESCAPE TO EXTENSION TABLE

 
 

ESC

 
 

 

 
 

0x1B

 
 

27   10

 
 

0x1B   0A

 
 

FORM  FEED

 
 

 

 
 

12

 
 

0x 0C

 
 

27   20

 
 

0x1B   14

 
 

CIRCUMFLEX ACCENT

 
 

^

 
 

94

 
 

0x5E

 
 

27   40

 
 

0x1B   28

 
 

LEFT CURLY BRACKET

 
 

{

 
 

123

 
 

0x7B

 
 

27   41

 
 

0x1B   29

 
 

RIGHT CURLY BRACKET

 
 

}

 
 

125

 
 

0x7D

 
 

27   47

 
 

0x1B   2F

 
 

REVERSE SOLIDUS (BACKSLASH)

 
 

\

 
 

92

 

 

 
 

0x 5C

 
 

27   60

 
 

0x1B   3C

 
 

LEFT SQUARE BRACKET

 
 

[

 
 

91

 
 

0x5B

 
 

27   61

 
 

0x1B   3D

 
 

TILDE

 
 

~

 
 

126

 
 

0x7E

 
 

27   62

 
 

0x1B   3E

 
 

RIGHT SQUARE BRACKET

 
 

]

 
 

93

 
 

0x5D

 
 

27   64

 
 

0x1B   40

 
 

VERTICAL BAR

 
 

|

 
 

124

 
 

0x 7C

 
 

27   101

 
 

0x1B   65

 
 

EURO SIGN

 
 

 
 

164 (ISO-8859-15 )

 

8364 (ANSI)

 
 

 

 
 

28

 
 

0x 1C

 
 

LATIN CAPITAL LETTER AE

 
 

Æ

 
 

198

 
 

0xC6

 
 

29

 
 

0x1D

 
 

LATIN SMALL LETTER AE

 
 

æ

 
 

230

 
 

0xE5

 
 

30

 
 

0x1E

 

   

LATIN SMALL LETTER SHARP S (German)

 
 

ß

 
 

223

 
 

0xDF

 
 

31

 
 

0x 1F

 
 

LATIN CAPITAL LETTER E WITH ACUTE

 
 

É

 
 

201

 
 

0xA9

 

 

3. 32----47

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

32

 
 

0x20

 
 

SPACE

 
 

 

 
 

32

 
 

0x20

 
 

33

 
 

0x21

 
 

EXCLAMATION  MARK

 
 

!

 
 

33

 
 

0x21

 
 

34

 
 

0x22

 
 

QUOTATION MARK

 
 

"

 
 

34

 
 

0x22

 
 

35

 
 

0x23

 
 

NUMBER SIGN

 
 

#

 
 

35

 
 

0x23

 
 

36

 
 

0x24

 
 

CURRENCY SIGN

 
 

¤

 
 

164 (ISO-8859-1)

 
 

0xA4

 
 

37

 
 

0x25

 
 

PERCENT SIGN

 
 

%

 
 

37

 
 

0x25

 
 

38

 
 

0x26

 
 

AMPERSAND

 
 

&

 
 

38

 
 

0x26

 
 

39

 
 

0x27

 
 

APOSTROPHE

 
 

'

 
 

39

 
 

0x27

 
 

40

 
 

0x28

 
 

LEFT PARENTHESIS

 
 

(

 
 

40

 
 

0x28

 
 

41

 
 

0x29

 
 

RIGHT  PARENTHESIS

 
 

)

 
 

41

 
 

0x29

 
 

42

 
 

0x 2A

 
 

ASTERISK

 
 

*

 
 

42

 
 

0x 2A

 
 

43

 
 

0x2B

 
 

PLUS  SIGN

 
 

+

 
 

43

 
 

0x2B

 
 

44

 
 

0x 2C

 
 

COMMA

 
 

,

 
 

44

 
 

0x 2C

 
 

45

 
 

0x2D

 
 

HYPHEN-MINUS

 
 

-

 
 

45

 
 

0x2D

 
 

46

 
 

0x2E

 
 

FULL STOP

 
 

.

 
 

46

 
 

0x2E

 
 

47

 
 

0x 2F

 
 

SOLIDUS (SLASH)

 
 

/

 
 

47

 
 

0x 2F

 

 

4. 48----63

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

48

 
 

0x30

 
 

DIGIT ZERO

 
 

0

 
 

48

 
 

0x30

 
 

49

 
 

0x31

 
 

DIGIT  ONE

 
 

1

 
 

49

 
 

0x31

 
 

50

 
 

0x32

 
 

DIGIT TWO

 
 

2

 
 

50

 
 

0x32

 
 

51

 
 

0x33

 
 

DIGIT THREE

 
 

3

 
 

51

 
 

0x33

 
 

52

 
 

0x34

 
 

DIGIT FOUR

 
 

4

 
 

52

 
 

0x34

 
 

53

 
 

0x35

 
 

DIGIT FIVE

 
 

5

 
 

53

 
 

0x35

 
 

54

 
 

0x36

 
 

DIGIT SIX

 
 

6

 
 

54

 
 

0x36

 
 

55

 
 

0x37

 
 

DIGIT SEVEN

 
 

7

 
 

55

 
 

0x37

 
 

56

 
 

0x38

 
 

DIGIT EIGHT

 
 

8

 
 

56

 
 

0x38

 
 

57

 
 

0x39

 
 

DIGIT NINE

 
 

9

 
 

57

 
 

0x39

 
 

58

 
 

0x 3A

 
 

COLON

 
 

:

 
 

58

 
 

0x 3A

 
 

59

 
 

0x3B

 
 

SEMICOLON

 
 

;

 
 

59

 
 

0x3B

 
 

60

 
 

0x 3C

 
 

LESS-THAN   SIGN

 
 

<  

 
 

60

 
 

0x 3C

 
 

61

 
 

0x3D

 
 

EQUALS SIGN

 
 

=

 
 

61

 
 

0x3D

 
 

62

 
 

0x3E

 
 

GREATER-THAN   SIGN

 
 

>  

 
 

62

 
 

0x3E

 
 

63

 
 

0x 3F

 
 

QUESTION    MARK

 
 

?

 
 

63

 
 

0x 3F

 

 

5. 64----79

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

64

 
 

0x40

 
 

INVERTED 
  EXCLAMATION MARK

 
 

¡

 
 

161

 
 

0xA1

 
 

65

 
 

0x41

 
 

LATIN  CAPITAL LETTER A

 
 

A

 
 

65

 
 

0x41

 
 

66

 
 

0x42

 
 

LATIN CAPITAL LETTER B

 
 

B

 
 

66

 
 

0x42

 
 

67

 
 

0x43

 
 

LATIN CAPITAL LETTER C

 
 

C

 
 

67

 
 

0x43

 
 

68

 
 

0x44

 
 

LATIN CAPITAL LETTER D

 
 

D

 
 

68

 
 

0x44

 
 

69

 
 

0x45

 
 

LATIN CAPITAL LETTER E

 
 

E

 
 

69

 
 

0x45

 
 

70

 
 

0x46

 
 

LATIN CAPITAL LETTER F

 
 

F

 
 

70

 
 

0x46

 
 

71

 
 

0x47

 
 

LATIN CAPITAL LETTER G

 
 

G

 
 

71

 
 

0x47

 
 

72

 
 

0x48

 
 

LATIN CAPITAL LETTER H

 
 

H

 
 

72

 
 

0x48

 
 

73

 
 

0x49

 
 

LATIN CAPITAL LETTER I

 
 

I

 
 

73

 
 

0x49

 
 

74

 
 

0x 4A

 
 

LATIN CAPITAL LETTER J

 
 

J

 
 

74

 
 

0x 4A

 
 

75

 
 

0x4B

 
 

LATIN CAPITAL LETTER K

 
 

K

 
 

75

 
 

0x4B

 
 

76

 
 

0x 4C

 
 

LATIN CAPITAL LETTER L

 
 

L

 
 

76

 
 

0x 4C

 
 

77

 
 

0x4D

 
 

LATIN CAPITAL LETTER M

 
 

M

 
 

77

 
 

0x4D

 
 

78

 
 

0x4E

 
 

LATIN CAPITAL LETTER N

 
 

N

 
 

78

 
 

0x4E

 
 

79

 
 

0x 4F

 
 

LATIN CAPITAL LETTER O

 
 

O

 
 

79

 
 

0x 4F

 

 

6. 80----95

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

80

 
 

0x50

 
 

LATIN CAPITAL LETTER P

 
 

P

 
 

80

 
 

0x50

 
 

81

 
 

0x51

 
 

LATIN CAPITAL LETTER Q

 
 

Q

 
 

81

 
 

0x51

 
 

82

 
 

0x52

 
 

LATIN CAPITAL LETTER R

 
 

R

 
 

82

 
 

0x52

 
 

83

 
 

0x53

 
 

LATIN CAPITAL LETTER S

 
 

S

 
 

82

 
 

0x53

 
 

84

 
 

0x54

 
 

LATIN CAPITAL LETTER T

 
 

T

 
 

84

 
 

0x54

 
 

85

 
 

0x55

 
 

LATIN CAPITAL LETTER U

 
 

U

 
 

85

 
 

0x55

 
 

86

 
 

0x56

 
 

LATIN CAPITAL LETTER V

 
 

V

 
 

86

 
 

0x56

 
 

87

 
 

0x57

 
 

LATIN CAPITAL LETTER W

 
 

W

 
 

87

 
 

0x57

 
 

88

 
 

0x58

 
 

LATIN CAPITAL LETTER X

 
 

X

 
 

88

 
 

0x58

 
 

89

 
 

0x59

 
 

LATIN CAPITAL LETTER Y

 
 

Y

 
 

89

 
 

0x59

 
 

90

 
 

0x 5A

 
 

LATIN CAPITAL LETTER Z

 
 

Z

 
 

90

 
 

0x 5A

 
 

91

 
 

0x5B

 
 

LATIN CAPITAL LETTER A WITH  DIAERESIS

 
 

Ä

 
 

196

 
 

0xC4

 
 

92

 
 

0x 5C

 
 

LATIN CAPITAL LETTER O WITH  DIAERESIS

 
 

Ö

 
 

214

 
 

0xD6

 
 

93

 
 

0x5D

 
 

LATIN CAPITAL LETTER N WITH TILDE

 
 

Ñ

 
 

209

 
 

0xD1

 
 

94

 
 

0x5E

 
 

LATIN CAPITAL LETTER U WITH  DIAERESIS

 
 

Ü

 
 

220

 
 

0xDC

 
 

95

 
 

0x 5F

 
 

SECTION  SIGN

 
 

§

 
 

167

 
 

0xA7

 

7. 96---111

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

96

 
 

0x60

 
 

INVERTED QUESTION MARK

 
 

¿

 
 

191

 
 

0xBF

 
 

97

 
 

0x61

 
 

LATIN  SMALL LETTER A

 
 

a

 
 

97

 
 

0x61

 
 

98

 
 

0x62

 
 

LATIN SMALL LETTER B

 
 

b

 
 

98

 
 

0x62

 
 

99

 
 

0x63

 
 

LATIN SMALL LETTER C

 
 

c

 
 

99

 
 

0x63

 
 

100

 
 

0x64

 
 

LATIN SMALL LETTER D

 
 

d

 
 

100

 
 

0x64

 
 

101

 
 

0x65

 
 

LATIN SMALL LETTER E

 
 

e

 
 

101

 
 

0x65

 
 

102

 
 

0x66

 
 

LATIN SMALL LETTER F

 
 

f

 
 

102

 
 

0x66

 
 

103

 
 

0x67

 
 

LATIN SMALL LETTER G

 
 

g

 
 

103

 
 

0x67

 
 

104

 
 

0x68

 
 

LATIN SMALL LETTER H

 
 

h

 
 

104

 
 

0x68

 
 

105

 
 

0x69

 
 

LATIN SMALL LETTER I

 
 

i

 
 

105

 
 

0x69

 
 

106

 
 

0x 6A

 
 

LATIN SMALL LETTER J

 
 

j

 
 

106

 
 

0x 6A

 
 

107

 
 

0x6B

 
 

LATIN SMALL LETTER K

 
 

k

 
 

107

 
 

0x6B

 
 

108

 
 

0x 6C

 
 

LATIN SMALL LETTER L

 
 

l

 
 

108

 
 

0x 6C

 
 

109

 
 

0x6D

 
 

LATIN SMALL LETTER M

 
 

m

 
 

109

 
 

0x6D

 
 

110

 
 

0x6E

 
 

LATIN SMALL LETTER N

 
 

n

 
 

110

 
 

0x6E

 
 

111

 
 

0x 6F

 
 

LATIN SMALL LETTER O

 
 

o

 
 

111

 
 

0x 6F

 

 

8. 111----127

                                                                                                                                                                                                                                                                               
 

GSM 7Bit Decimal

 
 

Hex

 
 

Character  Name

 
 

CharacterISO-8859-1 

 
 

Decimal

 
 

Hex

 
 

112

 
 

0x70

 
 

LATIN SMALL LETTER P

 
 

p

 
 

112

 
 

0x70

 
 

113

 
 

0x71

 
 

LATIN SMALL LETTER Q

 
 

q

 
 

113

 
 

0x71

 
 

114

 
 

0x72

 
 

LATIN SMALL LETTER R

 
 

r

 
 

114

 
 

0x72

 
 

115

 
 

0x73

 
 

LATIN SMALL LETTER S

 
 

s

 
 

115

 
 

0x73

 
 

116

 
 

0x74

 
 

LATIN SMALL LETTER T

 
 

t

 
 

116

 
 

0x74

 
 

117

 
 

0x75

 
 

LATIN SMALL LETTER U

 
 

u

 
 

117

 
 

0x75

 
 

118

 
 

0x76

 
 

LATIN SMALL LETTER V

 
 

v

 
 

118

 
 

0x76

 
 

119

 
 

0x77

 
 

LATIN SMALL LETTER W

 
 

w

 
 

119

 
 

0x77

 
 

120

 
 

0x78

 
 

LATIN SMALL LETTER X

 
 

x

 
 

120

 
 

0x78

 
 

121

 
 

0x79

 
 

LATIN SMALL LETTER Y

 
 

y

 
 

121

 
 

0x79

 
 

122

 
 

0x 7A

 
 

LATIN SMALL LETTER Z

 
 

z

 
 

122

 
 

0x 7A

 
 

123

 
 

0x7B

 
 

LATIN SMALL LETTER A WITH DIAERESIS

 
 

ä

 
 

228

 
 

0xE4

 
 

124

 
 

0x 7C

 
 

LATIN SMALL LETTER O WITH DIAERESIS

 
 

ö

 
 

246

 
 

0xF6

 
 

125

 
 

0x7D

 
 

LATIN SMALL LETTER N WITH TILDE

 
 

ñ

 
 

241

 
 

0xF1

 
 

126

 
 

0x7E

 
 

LATIN SMALL LETTER U WITH DIAERESIS

 
 

ü

 
 

252

 
 

0xFC

 
 

127

 
 

0x 7F

 

   

LATIN SMALL LETTER A WITH GRAVE

 
 

à

 
 

224

 
 

0xE0

 

部分字符不可见, 附图1
7bit_default_table pud格式7bit编码对应表_第1张图片

注意事项:空位使用0填充(图中6字节的情况),当编码后最后一个字节空位刚好为7位时(图中7字节的情况),改为使用字符CR(0x0d)填充, 避免填充后多余字节0x00与c语言字符串结尾符号0x00的冲突

编码过程示例
7bit_default_table pud格式7bit编码对应表_第2张图片