# Codificação de caracteres

Uma codificação de caracteres é um padrão de relacionamento entre um conjunto de caracteres (representações de grafemas ou unidades similares a grafemas como as que compõem um alfabeto ou silabário utilizados na comunicação através de uma linguagem natural) com um conjunto de outra coisa, como por exemplo números ou pulsos elétricos com o objetivo de facilitar o armazenamento de texto em computadores e sua transmissão através de redes de telecomunicação. Exemplos comuns são o código Morse que codifica as letras do alfabeto latino e os numerais como seqüências de pulsos elétricos de longa e curta duração e também o ASCII que codifica os mesmos grafemas do código Morse além de outros símbolos através de números inteiros e da representação binária em sete bits destes mesmos números.
Convencionalmente, conjunto de caracteres e codificação de caracteres eram considerados sinônimos, já que o mesmo nome poderia especificar tanto quais caracteres estão disponíveis e como eles foram codificados em um fluxo de unidades de código (normalmente com um único caractere por unidade de código). No entanto, o Unicode afastou essa ideia, separando a ideia de numerar uma série de caracteres de codificar esses caracteres em um fluxo de unidades de código. Para manter as nomenclaturas históricas e os sistemas baseados nelas, usa-se o termo charset para se referir a uma codificação de caracteres.

## Repertório de caracteres

Em alguns contextos, especialmente na comunicação e armazenamento computacional, faz sentido a distinção entre um repertório de caracteres (um conjunto completo de caracteres abstratos que um sistema suporta) e um conjunto de caracteres codificados ou codificação de caracteres (que detalha como representar caracteres deste conjunto usando códigos inteiros).
Nos primórdios da computação, a introdução de repertórios de caracteres tais como o ASCII (1963) e o EBCDIC (1964) deu início ao processo de padronização. As limitações de tais conjuntos logo mostrou-se aparente, e uma quantidade de métodos ad hoc foram desenvolvidos para estendê-los. A necessidade de suportar múltiplos sistemas de escrita, incluindo a família CJK dos caracteres leste-asiáticos, exigia suporte a um número bem maior de caracteres e demandava uma abordagem sistemática diferente das anteriores para a codificação de caracteres.
Por exemplo, o repertório completo do Unicode compreende mais de cem mil caracteres. Cada um destes caracteres possui um código inteiro único no intervalo de 0 a 10FFFF hexadecimal (pouco acima de 1,1 milhão, embora nem todos os inteiros neste intervalo representem caracteres). Outros repertórios comuns incluem o ASCII e o ISO 8859-1 que espelham, respectivamente, os primeiros 128 e 256 caracteres do Unicode.

## Codificação de caracteres populares

* ISO 646
** ASCII
* EBCDIC
* ISO 8859:
** ISO 8859-1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO 8859-9, ISO 8859-10, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16
* Conjunto de caracteres do DOS, também conhecida como página de código IBM:
** CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869
* Conjunto de caracteres Windows:
** Windows-1250
** Windows-1251 para alfabeto Cirílico
** Windows-1252
** Windows-1253
** Windows-1254
** Windows-1255 para o Hebreu
** Windows-1256 para o Arábico
** Windows-1257
** Windows-1258 para o Vietnamita
* KOI8-R, KOI8-U, KOI7
* ISCII
* VISCII
* Big5
** HKSCS
* Guobiao
** GB2311
** GB18030
* ISO 2022, Shift-JIS, EUC
* Unicode (e subconjuntos)
* ABICOMP
* BRASCII