# O conjunto de caracteres GSM-7

> O GSM-7 é o alfabeto predefinido de 7 bits definido na GSM 03.38 (3GPP TS 23.038) para SMS. Codifica 128 caracteres — letras latinas, dígitos, pontuação e alguns caracteres acentuados e gregos — em 7 bits cada. Dez caracteres extra vivem numa tabela de extensão e cada um custa dois septetos. O texto cabe em 160 caracteres por SMS único.

- URL canônico: https://www.broadnet.me/pt/reference/gsm7-character-set
- Idioma: pt
- Última atualização: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)

O alfabeto predefinido GSM 7-bit completo da GSM 03.38: a tabela básica de 128 caracteres, a tabela de extensão baseada em escape (| ^ € { } [ ] ~ \ e form-feed) e como funciona o empacotamento de 7 bits.

## A tabela básica (128 caracteres)

O alfabeto predefinido GSM-7 empacota 128 caracteres em 7 bits cada. Cobre o alfabeto latino maiúsculo, dígitos, pontuação comum, um conjunto de vogais latinas acentuadas, os sinais de secção e de moeda e várias letras gregas maiúsculas usadas como símbolos. Cada caractere aqui custa exatamente um septeto (7 bits).

*Alfabeto básico GSM-7 (por grupo)*

| Grupo | Caracteres |
|---|---|
| Maiúsculas latinas | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| Minúsculas latinas | a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Dígitos | 0 1 2 3 4 5 6 7 8 9 |
| Pontuação | ! " # % & ' ( ) * + , - . / : ; < = > ? _ |
| Latim acentuado | à ä å æ è é ì ñ ò ö ø ù ü Ä Å Æ Ç É Ñ Ö Ø Ü ß |
| Símbolos gregos | Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ |
| Moeda / símbolos | £ $ ¥ ¤ € (ext) § ¡ ¿ @ |
| Espaço em branco | SP (espaço), CR, LF |

## A tabela de extensão

Dez caracteres não estão na tabela básica. Alcançam-se com um prefixo de escape (0x1B) seguido do código do caractere na tabela de extensão, o que significa que cada um destes custa dois septetos, não um. Incluir qualquer deles numa mensagem reduz a capacidade efetiva de SMS único. Note que o sinal de euro (€) é um deles.

*Tabela de extensão GSM-7 — cada um custa 2 septetos*

| Caractere | Nome |
|---|---|
| \| | Barra vertical |
| ^ | Caret / acento circunflexo |
| € | Símbolo do euro |
| { | Chave esquerda |
| } | Chave direita |
| [ | Colchete esquerdo |
| ] | Colchete direito |
| ~ | Til |
| \ | Barra invertida |
| FF | Avanço de página |

## Empacotamento de 7 bits

Como cada caractere tem 7 bits mas os octetos têm 8 bits, o GSM-7 empacota septetos através das fronteiras de byte. Oito caracteres de 7 bits empacotam-se em sete octetos de 8 bits, pelo que 160 septetos preenchem 140 octetos — o limite de dados de utilizador do SMS. O empacotamento desloca os bits de cada caractere sucessivo para preencher as folgas, e é por isso que uma visão ingénua de um byte por caractere de um SMS GSM-7 parece baralhada.

*Empacotamento de septetos — 160 septetos → 140 octetos*

```text
8 characters (56 bits) ────► 7 octets (56 bits)
160 GSM-7 septets       ────► 140 octets (the SMS payload limit)
                              (an extension char = 2 septets)
```

## Tabelas de deslocamento de idioma

A 3GPP TS 23.038 define também tabelas de deslocamento de idioma nacionais (por exemplo turco, espanhol, português) que remapeiam algumas posições da tabela de extensão para letras específicas do idioma. O suporte é irregular entre terminais e redes, pelo que muitos remetentes evitam depender delas e recorrem ao UCS-2 quando uma mensagem precisa de caracteres fora do conjunto básico GSM-7.

## Perguntas frequentes

### Quantos caracteres cabem num SMS GSM-7?

160 caracteres num SMS único, porque 160 septetos de 7 bits cada preenchem o limite de 140 octetos de dados de utilizador. As mensagens GSM-7 concatenadas descem para 153 caracteres por segmento para dar espaço ao User Data Header.

### Que caracteres contam como dois no GSM-7?

Os dez caracteres da tabela de extensão — | ^ € { } [ ] ~ \ e form-feed — cada um custa dois septetos por precisar de um prefixo de escape. Usar qualquer deles reduz quanto texto cabe num SMS único.

### O sinal de euro está no GSM-7?

Sim, mas na tabela de extensão, pelo que custa dois septetos em vez de um. Uma mensagem que contenha € cabe, por isso, em menos caracteres antes de precisar de um segundo segmento.

### Porque é que uma mensagem GSM-7 parece baralhada ao nível de byte?

Porque o GSM-7 empacota caracteres de 7 bits através de fronteiras de octeto de 8 bits. Oito caracteres ocupam sete octetos, pelo que ler o conteúdo um byte por caractere dá disparate — é preciso desempacotar os septetos primeiro.

### O que acontece se o meu texto tiver um caractere que não está no GSM-7?

A mensagem inteira tem de mudar para codificação UCS-2 (16 bits), o que reduz a capacidade de SMS único de 160 para 70 caracteres. Um único caractere fora do GSM-7 (um emoji, uma aspa curva ou muitas letras não latinas) força isto.

## Fontes

- [3GPP TS 23.038 — alphabets and language-specific info](https://www.3gpp.org/dynareport/23038.htm)
- [3GPP TS 23.040 — SMS technical realization](https://www.3gpp.org/dynareport/23040.htm)

## Relacionados

- [SMS UCS-2 e Unicode](https://www.broadnet.me/pt/reference/ucs2-unicode-sms)
- [Deteção e custo de codificação](https://www.broadnet.me/pt/reference/encoding-detection-and-cost)
- [Verificador GSM-7 / Unicode (ferramenta gratuita)](https://www.broadnet.me/pt/tools/gsm7-unicode-checker)
- [O que é GSM-7?](https://www.broadnet.me/pt/answers/what-is-gsm-7)
- [Calculadora de segmentos SMS (ferramenta gratuita)](https://www.broadnet.me/pt/tools/sms-segment-calculator)
