La codificación de caracteres, en la programación de computadoras, es un método o algoritmo que se utiliza para encontrar una representación generalmente numérica de un carácter, glifo o símbolo. El uso de la codificación de caracteres en las computadoras es necesario porque la información dentro de la memoria de la computadora y en medios legibles por computadora se almacena como secuencias de bits o números. Esto requiere el uso de codificación para traducir caracteres no numéricos que se utilizan para visualización o salida legible por humanos a una forma que una computadora pueda manipular. En una aplicación más específica, los documentos en lenguaje de marcado de hipertexto (HTML) que son leídos por los navegadores web pueden definir qué tipo de codificación de caracteres están usando para que el navegador sepa qué juego de caracteres específico usar al mostrar la información en el documento. Hay varios esquemas de codificación en uso, aunque muchos de estos conjuntos patentados y heredados están siendo reemplazados lentamente por el estándar de codificación Unicode®.
En los primeros días de las computadoras, cuando había un espacio de memoria limitado, los caracteres básicos del alfabeto inglés, incluidos la puntuación y los números, se almacenaban en secuencias de 7 bits que permitían 128 caracteres diferentes. En este esquema original, cada byte de 7 bits representaba un carácter del alfabeto inglés, numerado en secuencia. Esta codificación de caracteres fue eficiente y finalmente se estandarizó y se usó en la mayoría de las computadoras que se produjeron. Aunque el sistema de codificación evolucionó hacia el estándar de codificación Unicode®, el concepto siguió siendo el mismo. Es decir, cada carácter en un idioma está directamente relacionado con un solo número dentro de un gran conjunto de caracteres estándar, y ese número es lo que usa una computadora para almacenar, procesar e indexar el carácter.
Se desarrollaron otros tipos de codificación de caracteres por diferentes razones. Algunos que estaban orientados específicamente al alfabeto inglés y destinados a ser utilizados para texto solo mapearon sus caracteres en secuencias de 7 bits y luego los distribuyeron en bytes u octetos de 8 bits. Esto tuvo el efecto de ahorrar 1 bit por octeto, utilizando efectivamente la codificación de caracteres como un tipo de compresión. Otros esquemas de codificación intentaron proporcionar información básica sobre un carácter y luego caracteres adicionales para representar acentos especiales que podrían usarse al escribir en un idioma diferente, aunque estos fueron abandonados en gran medida por los métodos de codificación uno a uno más simples.
En los documentos HTML, la codificación de caracteres es aproximadamente lo mismo que el concepto más amplio, excepto que la codificación que se define abarca un conjunto completo de caracteres. Esto puede ser importante no solo para idiomas extranjeros, sino también para documentos que usan símbolos específicos para ciencias o matemáticas que no están presentes en todos los juegos de caracteres. También puede ser útil para usar signos de puntuación y otros glifos que pueden no estar presentes o que se asignan de manera diferente en los esquemas de codificación. Los documentos que no definen correctamente una codificación de caracteres no estándar podrían mostrarse incorrectamente o estar llenos de caracteres y marcadores de posición sin sentido en lugar de información legible.