Configurar un set de caracteres en un archivo .htaccess de Apache

Puedes usar un archivo .htaccess para configurar un set de caracteres por defecto para todos tus documentos. El set de caracteres por defecto de Apache es ISO-8859-1. Apache usará este set de caracteres en la cabecera HTTP que envía al explorador luego de una petición.

Por ejemplo, para configurar un UTF-8 como set de caracteres por defecto para todo el sitio, agregue el sigiuente código a su archivo .htaccess: AddDefaultCharset UTF-8

Para servir solo los documentos .html como UTF-8, agregue la siguiente línea: AddCharset UTF-8 .html o: AddType 'text/html; charset=UTF-8' html la directiva AddCharset especifica solamente el set de caracteres, AddType especifica ambos, tipo MIME y set de caracteres en una sola línea.

Puedes tambien limitar con Files, FilesMatch, Directory etc. <FilesMatch "\.(htm|html|css|js)$">
ForceType 'text/html; charset=UTF-8'
</FilesMatch>
<Files "index.php">
ForceType 'text/html; charset=UTF-8'
</Files>

Puedes tambien crear una nueva extension (index.utf8 es servido como un documento Unicode UTF-8, index.html es ISO-8859-1): AddCharset UTF-8 .utf8

Nótese que intentar forzar lenguajes de script (como ser PHP) a usar otro set de caracteres, no siempre funciona (por ejemplo, cuando el content-type es definido en el PHP o cuando PHP es ejecutado en modo CGI). Mire a continuacíon para saber como arreglar sus scripts.

Configurar un set de caracteres en lenguajes de programación

PHP

Use la función header() para enviar una cabecera HTTP: header("Content-Type: text/html; charset=UTF-8"); Deberás usar esta funcion antes que ninguna otra porcion de código envíe alguna salida al explorador! Mas info aquí.

HTML

Configure la meta etiqueta Content-Type: <meta http-equiv="content-type" content="text/html; charset=UTF-8"> Agregue esta meta etiqueta en la sección <head> de su documento HTML. Algunos scripts (como ser Google Cached pages) ignorarán esta meta etiqueta si ha especificado un set de caracteres en su configuracion de Apache (o archivo .htaccess). Los exploradores podrían ignorar esta directiva si su documento tiene un encabezado BOM (ver a continuación).

XML

En la primero a línea del documento XML: <?xml version='1.0' encoding='utf-8'?>

Marca BOM

El encabezado BOM o Byte Order Mark es un U+FEFF ("espacio no quebrable de ancho cero", EF BB BF en hex, 239 187 191 en decimal), es una marca que es guardada al principio de un documento de texto para avisarle a los editores de texto, exploradores y otros programas que el archivo esta codificado en UTF-8 (o UTF-16, 32). Muchos editores agregaran automáticamente un encabezado BOM una vez que especifique que la codificacion es UTF-8. Algunos editores tambien tienen alternativas al encabezado BOM, por ejemplo "UTF-8 Cookie", donde el editor recuerda que el documento es UTF-8 mediante la creación de un cookie en su sistema.

Los encabezados BOM podrían tener problemas con algunos lenguajes de scripting como ser PHP (va a observar algunos caracteres raros -el encabezado BOM- titilando por una fracción de segundo antes que la pagina sea cargada).

Configurar un set de caracteres en MySQL

MySQL ofrece la configuración de set de caracteres globalmente a travez de su archivo de configuracion my.cnf, para las conexiones, para la creacion de bases de datos y tablas

Para verificar la lista de set de caracteres soportados por el servidor MySQL, tipee este comando en la linea de comandos mysql: mysql> show character set;

Para configurar el set de caracteres por defecto del servidor MySQL a UTF-8, debe agregar el siguiente código al archivo my.cnf: [client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
default-character-set = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Para configurar el set de caracteres por defecto de una base de datos al crearla, tipee este comando en la linea de comandos mysql: mysql> CREATE DATABASE dbname DEFAULT CHARACTER SET utf8;

Para configurar el set de caracteres por defecto de una tabla perteneciente a una base de datos MySQL, tipee este comando en la linea de comandos mysql: mysql> CREATE TABLE tablename ( *sus campos* ) ENGINE=su motor DEFAULT CHARSET=utf8;