Solucionar Problemas Html Acentos y Eñes: Charset Utf-8 / Iso-8859-1 En Php

by admin admin Date: 22-03-2017 charset codificación php apache


La codificación de las páginas web (charset) es un problema recurrente para los webmasters, porque:

  • Depende del editor en que se haya hecho la web, si en el trabajamos por defecto en UTF-8 o ISO-8859-1. Si el archivo original estaba escrito en ISO-8859-1 y lo editamos en UTF-8, veremos los caracteres especiales mal codificados. Si guardamos ese archivo tal cual, estaremos corrompiendo la codificación original (se guardará mal, con UTF-8). Y viceversa.
  • Depende de la configuración del Apache.
  • Depende de si hay un archivo oculto .htaccess en el directorio raíz que sirve nuestra web (httpdocs, public_html o similar)
  • Depende de si se especifica en las etiquetas META de los HTML resultantes.
  • Depende de si se especifica en la cabecera de un archivo PHP.
  • Depende del charset elegido en la base de datos (si se usa una base de datos para mostrar contenidos con un CMS, tal como Joomla, Drupal, phpNuke, o una aplicación propia que sea dinámica).
  •  

Por lo general, si nunca tienen que aparecer acentos o eñes en nuestra web, nos es indiferente la codificación (aunque pueden haber otros símbolos que nos fastidien). Aunque si nuestra web está en español, lo más normal es que coloquemos acentos y eñes. Para ello, el estándar HTML está preparado para colocar todos los símbolos y acentos que nos sean necesarios, codificándolos. Así, para los acentos y eñes, deberíamos colocar:

á -> á
é -> é
í -> í
ó -> ó
ú -> ú
ñ -> ñ


Variantes valenciano-catalán-balear para acentos abiertos:

à -> à
è -> è
ò -> ò

De este modo, veremos todos caracteres correctamente, independientemente del charset.

Sin embargo, puede ser tedioso para ciertos contenidos tener que ir traduciendo nosotros manualmente los caracteres. Es en estos casos donde vale la pena perder un poco de tiempo para ajustar las distintas configuraciones.


Primero, habría que determinar en nuestra web con las etiquetas META que nuestra web debe servirse en la codificación que nosotros elijamos. O sea, dentro de :

 

o bien

 


Si seguimos con el problema, Segundo, ver si por defecto tiene el servidor (apache) algún charset predefinido. Si es así, se ignorarán las etiquetas META del html.
En un servidor Linux, el archivo charset está en:

/etc/apache2/conf.d/charset

también puede cambiarse en el archivo httpd.conf

Debería aparecer sólo "AddDefaultCharset off", para que haga caso de las etiquetas META (lo ideal). Podemos poner, por ejemplo, "AddDefaultCharset UTF-8", y así apache siempre emitirá las webs en UTF-8. El problema es que esto afecta a todo el servidor, y si luego tenemos alguna web que vaya a usar otra codificación tendremos un problema. Por eso, lo ideal es que esté a Off y que cada web defina cómo quiere mostrarse.

Pero puede darse el caso de que nosotros no seamos los administradores del servidor y sólo tengamos un Plesk, y no podamos acceder al archivo charset por encontrarse fuera de nuestro rango de permisos. Podemos, entonces, pedirle al administrador del servidor que coloque el parámetro anterior a Off, o bien...


Alternativa 1: Colocar un archivo .htaccess en el directorio raíz de la web
Los .htaccess son archivos de configuración que sobreescriben algunas configuraciones del apache sólo para determinados casos. Hay que tener en cuenta que estos archivos:

  • Pueden funcionar total o parcialmente, dependiendo de la configuración del servidor (cuestión de seguridad).
  • Son archivos ocultos, por lo que para verlos tenéis que tener habilitada la función "ver archivos ocultos" en vuestro programa que acceda por ftp.

Este archivo .htaccess debería tener al menos una línea de este tipo

AddDefaultCharset utf-8


Alternativa 2: Colocar una directiva en php que fuerce a mostrarse en la codificación deseada
Esto es, sólo sirve si el archivo tiene extensión ".php". Recordemos que el html y el php pueden convivir en el mismo fichero, con lo que si renombramos un ".html" a ".php", el resutlado es exactamente el mismo (si tenemos instalado el php en nuestro servidor, claro está).
En la primera línea del archivo que deseemos indicarle la codificación (o lo antes posible) deberíais colocar la siguiente cabecera:


Para todos los casos donde funcione el comando "AddCharset"
- Puede especificarse el charset según la extensión del archivo. Si, por ejemplo, queremos que los ".php" sean UTF-8 y los ".html" sean ISO, podemos colocar estas dos instrucciones seguidas:

AddCharset UTF-8 .php
AddCharset ISO-8859-1 .html


 
by admin admin Date: 22-03-2017 charset codificación php apache visitas : 9398  
 
 
 
 

Artículos relacionados

    Cómo obtener el token de acceso a Instagram usando PHP

    Cómo obtener el token de acceso a Instagram usando PHP? Para obtener el token de acceso Instagram, primero debes autenticar tu aplicación y luego obtener el token de acceso. Sigue los siguientes…

    Optimizar las consultas SQL en PHP: Select y Join

    La mayoría de nosotros tiene que relacionarse con bases de datos en nuestros proyectos, y SQL es uno de los languajes más utlizados. SQL (Structured Query Language) es un lenguaje…

    Cómo convertirte en un desarrollador web actual

    Hay un montón de tutoriales en línea completamente gratis. Si eres lo suficientemente autodirigido e interesado, no tienes ninguna dificultad para entrenarte a ti mismo. El punto para aprender a…

    24 recursos gratuitos para programadores novatos

    Cuando estamos descubriendo nuevas áreas, una pequeña ayuda es siempre bien venida. En la programación, los recursos existen en grandes cantidades para ayudar a todos los tipos de desarrolladores. Para…

    Cuixot

    Proyecto: Cuixot de Porc Negre Mallorquí gráfica desarrollo web SEO PHP/MYSQL, HTML, AJAX, Javascript, CSS  frontend/backoffice Pcore CMS Link a la web: Cuixot - Productos de la raza de cerdos negros de Mallorca

    PHP 7: Las novedades y como afecta a Wordpress

    PHP 7, la actualización mas importante y mas deseada para el languaje de desarrollo web lado servidor PHP, está a la vuelta de la esquina. De acuerdo con el calendario…

    Winginx, servidor nginx completo para windows

    Cuando necesitamos montar un servidor Apache en Windows o Mac tenemos opciones de WAMP y MAMP muy populares como por ejemplo XAMPP, pero se hacen mas populares servidores como Nginx.  Nginx…

    Como convertir tus tweets en Feeds RSS

    No hace mucho que Twitter dejó de soportar la funcionalidad que nos permitía de seguir nuestra timeline, nuestro usuarios, etc., gracias a los Feeds RSS. Intentando solucionar el problema, encontré una alternativa óptima :…

    YouPorn: El desarrollo tecnológico para el mundo del porno

    The Internet is for porn. Esto es un axioma innegociable. Las webs porno más importantes reciben millones de visitas al día y tienen que servir gigas y gigas de vídeo…

    MySql:Solución a problemas de codificación UTF-8 usando PHP

    Con estas filas de codigo podemos solucionar el problema UTF-8 en Php //Realizamos la conexion con la BD $cadena_conexion = @mysql_connect($maquinaConexion, $usuarioConexion, $claveConexion) or die("Error de conexion."); mysql_select_db($DB, $cadena_conexion); //Añadimos el fix…

    MySql: Comprobar si existen Campo y Tabla

    aquì una snippet rapida para averiguar si un campo existe en una tabla mysql: codice PHP: if ( mysql_num_rows(mysql_query("SHOW COLUMNS FROM nombre_tabla LIKE 'nombre_campo' ")) == 1 ) echo "el campo existe"…