{"id":706,"date":"2011-03-30T22:05:24","date_gmt":"2011-03-30T22:05:24","guid":{"rendered":"http:\/\/www.jmarior.net\/itank\/?p=706"},"modified":"2011-03-30T22:05:24","modified_gmt":"2011-03-30T22:05:24","slug":"como-solucionar-problemas-con-las-tablas-de-caracteres-en-entornos-lamp","status":"publish","type":"post","link":"https:\/\/www.jmarior.net\/itank\/como-solucionar-problemas-con-las-tablas-de-caracteres-en-entornos-lamp\/","title":{"rendered":"C\u00f3mo solucionar problemas con las tablas de caracteres en entornos LAMP"},"content":{"rendered":"<p><a href=\"https:\/\/www.jmarior.net\/itank\/files\/utf-8-partial.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-708\" title=\"utf-8 partial\" src=\"https:\/\/www.jmarior.net\/itank\/files\/utf-8-partial.gif\" alt=\"utf-8 partial\" width=\"534\" height=\"234\" srcset=\"https:\/\/www.jmarior.net\/itank\/files\/utf-8-partial.gif 670w, https:\/\/www.jmarior.net\/itank\/files\/utf-8-partial-300x132.gif 300w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a><\/p>\n<p>Hac\u00eda tiempo que no me encontraba con los dichosos problemas en las tablas de codificaci\u00f3n de caracteres en el servidor web Apache con PHP o incluso p\u00e1ginas HTML din\u00e1micas constru\u00eddas por scripts en Perl.<\/p>\n<p>La soluci\u00f3n es sencilla: hay que establecer el mismo charset en Apache, PHP y HTML. Yo he elegido UTF-8 como charset predeterminado en mis servidores web.<\/p>\n<p>Lo primero es entender qu\u00e9 pasa y d\u00f3nde est\u00e1 la incongruencia. El problema suele ser que el navegador tiene distintas codificaciones entre las que elegir y utiliza la que no nos interesa:<\/p>\n<p>La herramienta <a title=\"W3C Internationalization Checker \" href=\"http:\/\/qa-dev.w3.org\/i18n-checker\/\">W3C Internationalization Checker<\/a> es la clave aunque tambi\u00e9n podemos <a title=\"C\u00f3mo verificar los encabezados HTTP (HTTP headers)\" href=\"Verificaci\u00f3n de encabezados HTTP\">verificar los encabezados HTTP (HTTP headers)<\/a> que env\u00eda nuestro servidor web Apache.<\/p>\n<p>Para establecer la tabla de caracteres predeterminada en Apache hay que editar \/etc\/apache2\/httpd.conf y a\u00f1adir la l\u00ednea<br \/>\n<code>AddDefaultCharset UTF-8<\/code><\/p>\n<p>Si queremos especificar una  tabla de caracteres distinta para un directorio virtual hay que editar el .htaccess correspondiente y a\u00f1adir<br \/>\n<code>AddDefaultCharset UTF-16<\/code><\/p>\n<p>Para establecer la tabla de caracteres predeterminada de PHP hay que editar \/etc\/php5\/apache2\/php.ini y establecer la directiva<br \/>\n<code>default_charset = \"utf-8\"<\/code><\/p>\n<p>aunque tambi\u00e9n podemos establecer la codificaic\u00f3n desde nuestro c\u00f3digo fuente PHP usando la funci\u00f3n header() antes del cuerpo de nuestro output<br \/>\n<code>header ('Content-type: text\/html; charset=utf-8');<\/code><\/p>\n<p>Por \u00faltimo es obligatorio <a title=\"Codificaci\u00f3n de caracteres HTML\/XML\" href=\"http:\/\/www.w3.org\/International\/O-charset\">establecer la codificaci\u00f3n de caracteres en la salida HTML<\/a> en el tag &lt;head&gt;<br \/>\n<code>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html;charset=utf-8\" &gt;<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hac\u00eda tiempo que no me encontraba con los dichosos problemas en las tablas de codificaci\u00f3n de caracteres en el servidor web Apache con PHP o incluso p\u00e1ginas HTML din\u00e1micas constru\u00eddas por scripts en Perl. La soluci\u00f3n es sencilla: hay que establecer el mismo charset en Apache, PHP y HTML. Yo he elegido UTF-8 como charset [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":708,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[65,838,831,403,834,832,821,692,829,247,840,824,237],"class_list":["post-706","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-itank-ideas","tag-apache-http-server","tag-charset","tag-codificaciones","tag-http","tag-incongruencia","tag-international-questions","tag-lamp","tag-php","tag-pinas","tag-tambien","tag-utf-8","tag-w3c-internationalization","tag-web"],"views":3600,"_links":{"self":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts\/706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/comments?post=706"}],"version-history":[{"count":0,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts\/706\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/media\/708"}],"wp:attachment":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/media?parent=706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/categories?post=706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/tags?post=706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}