Entre los típicos errores de programación cuando un programador novato como yo se aventura a desarrollar un proyecto completo, se encuentra este, el manejo de tildes entre los valores introducidos en los campos de un formulario, este error es causado un una definición incorrecta del tipo de codificación a utilizar, tanto en la entrada como en la salida de la información, por ejemplo, un error típico es crear tablas con codificación UFT8 y las páginas con codificación iso-8859-1.
En lo particular, prefiero utilizar codificación UTF8 para todo, luego solo se formatea la salida mediante htmlentities considerando la sintaxis de dicha función:
htmlentities(string,quotestyle,character-set)
donde:
string = valor o variable que contiene la cadena que se desea convertir
quotestyle = Opcional. Especifica cómo codificar las comillas simples y dobles.
Los estilos disponibles son:
- ENT_COMPAT – por defecto. Codifica sólo comillas dobles
- ENT_QUOTES – Codifica comillas dobles e individuales
- ENT_NOQUOTES – no codifica ninguna cita
character-set = Opcional. Una cadena que especifica el juego de caracteres a usar.
Los valores permitidos son:
- ISO-8859-1 – por defecto. De Europa Occidental
- ISO-8859-15 – Estados de Europa Occidental (agrega el signo de Euro + y Finlandia las letras francesas desaparecidas en la norma ISO-8859-1)
- UTF-8 – compatible con ASCII 8-bit Unicode multi-byte
- CP866 – DOS específico juego de caracteres cirílicos
- CP1251 – específicos de Windows cirílico charset
- CP1252 – juego de caracteres específico de Windows para Europa Occidental
- KOI8-R – Rusia
- BIG5 – chino tradicional, utilizado principalmente en Taiwán
- GB2312 – Chino simplificado, de carácter nacional normalizado que figura
- Big5-HKSCS – Big5 con Hong Kong extensiones
- Shift_JIS – Japón
- EUC-JP – Japón
obviamente se utiliza UTF8, este es otro error común, al querer utilizar htmlentities simplemente implementan la sintaxis válida pero no necesariamente la correcta para su caso
echo(htmlentities($variable));
lo dicho, es correcto pero como notaron en los datos anteriores, por defecto tomara ENT_COMPAT y character-set será iso-8859-1 y el valor que contiene la variable fue ingresado por UTF8, en ese caso se puede utilizar:
echo(htmlentities($variable, ENT_COMPAT, ‘utf-8′));
Importante mencionar que si no se reconoce character-set, será ignorado y sustituido por la norma ISO-8859-1.
Espero les sirva, no olviden dejar sus comentarios y experiencias.