Estos tipos de datos se usan para guardar valores definidos en una codificación de caracteres, como el ASCII,  iso-8859-1, Win-1252, IBM 437, BMP de UNICODE, y otras codificaciones de caracteres de 8 y 16 dígitos binarios. Los códigos ASCII son una codificación de caracteres de 7 dígitos binarios, que permiten representar 128 caracteres desde 0 hasta 127, los códigos Win-1252, iso-8859-1, IBM 437 son codificaciones de caracteres de 8 dígitos binarios y pueden representar 256 caracteres, desde 0 hasta 255. Unicode es actualmente una codificación de caracteres de 24 dígitos binarios, que sólo cubre un rango de 0 hasta $10FFFF, (0 hasta 1 114 111), que nos permite representar alrededor  de 1 114 112 caracteres. Unicode agrupa su codificación de caracteres en Planos y uno de ellos es el Plano 0, conocido como BMP (Basic Multilingual Plane) que se usa para representar 65536 caracteres, desde 0 hasta 65535 (16 bits=2 bytes). Los tipos de datos soportados por el compilador son los siguientes:

Caracteres

Char y Ansichar se usan para guardar o almacenar caracteres de 1 byte (8 dígitos binarios), como pueden ser los caracteres de las siguientes codificaciones: ASCII (7 bits), iso-8859-1 (1 byte), Windows-1252 (1 byte), IBM 437 (1 byte), etc. A estos tipos de datos sólo se les puede asignar un sólo carácter o símbolo entre comillas simples, del siguiente modo: a:='A', y también se puede asignar escribiendo su código después de colocar el símbolo #, del siguiente modo: a:=#65 en decimal ó a:=#$41 en hexadecimal. A continuación un ejemplo:

Si queremos mostrar caracteres muy particulares de otras codificaciones de caracteres de 8 bits, como los bordes para recuadros que tiene la codificación de caracteres IBM 437, entonces es mejor escribir sus códigos y no asignar los caracteres directamente. Por ejemplo el siguiente carácter '╦' en IBM 437 tiene el código: #203, pero en UTF8 será #$E295A6, y si asignamos el carácter directamente del siguiente modo: a:='╦'; entonces el administrador de caracteres (Ver capitulo 2.6 Administrador de caracteres) convertirá el carácter a la codificación de caracteres que use por defecto el Sistema Operativo, en caso de no ser representable entonces asigna un signo de interrogación #$3F. Ejemplo:

Para cambiar la codificación de caracteres del intérprete de comandos en Windows a IBM 437, se debe usar la siguiente orden: chcp 437, en el caso de Linux si usan el terminal de Gnome entonces se hace a través del siguiente menú Terminal->Establecer codificación de caracteres. En capítulos anteriores hemos visto el tipo de dato String, este tipo de dato es una secuencia de datos de tipo Char, que se conoce como cadena de caracteres y es por eso que a una variable de tipo String podemos asignar entre comillas simples más de un carácter.

Widechar se usa para guardar o almacenar caracteres de 2 bytes (16 dígitos binarios), como son los caracteres del plano BMP de Unicode o el uso del Formato de transfomación Unicode UTF16, pero sólo para caracteres de 2 bytes, del mismo modo que los tipos de datos char y ansichar, se les puede asignar un sólo carácter entre comillas simples, y también se puede asignar escribiendo su código después de colocar el símbolo #, en decimal ó hexadecimal.

Los caracteres o símbolos que se asignen a una variable de tipo widechar, son convertidos de UTF8 a UTF16 de dos bytes, para poder almacenarlos en la variable de tipo widechar. Es decir si asignamos el símbolo del Euro, a una variable de tipo widechar, entonces el código en UTF8: #$E282AC, se convertirá a #$20AC y luego se asignará a la variable el código convertido. Ejemplo:

Las rutinas write y writeln sólo permiten mostrar caracteres que sean representables en una codificación de 8 dígitos binarios (ASCII, iso-8859-1, Win-1252, IBM 437, etc), y cuando se usan variables de tipo Widechar con estas rutinas entonces el administrador de caracteres (Ver capitulo 2.6 Administrador de caracteres) convertirá el carácter a la codificación de caracteres que use por defecto el Sistema Operativo, en caso de no ser representable entonces asigna un signo de interrogación #$3F, en Linux por defecto no se incluye el administrador de caracteres en los programas, por lo que sólo se mostrará el segundo byte de los valores siempre y cuando sean menores a #$00FF, en caso sean mayores se mostrará un signo de interrogación. Actualmente las variables que usen el tipo de dato Widechar, no se pueden usar con readln o read.