{"id":231,"date":"2012-04-23T17:07:14","date_gmt":"2012-04-23T20:07:14","guid":{"rendered":"http:\/\/linuxrs.com.br\/?p=231"},"modified":"2012-04-23T17:07:14","modified_gmt":"2012-04-23T20:07:14","slug":"solucionando-problemas-com-o-charset","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=231","title":{"rendered":"Solucionando problemas com o charset"},"content":{"rendered":"<p>Um problema muito comum ao utilizar o Apache 2 sobre uma distribui\u00e7\u00e3o Linux recente \u00e9 os caracteres acentuados das p\u00e1ginas hospedadas aparecerem trocados por interroga\u00e7\u00f5es, quadrados ou v\u00edrgulas em alguns navegadores, como nesse screenshot:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"figura9\" src=\"http:\/\/e.cdn-hardware.com.br\/static\/books\/servidores\/cap6-22_html_2fbd60ce.png.resized.jpg\" alt=\"\" name=\"figura9\" width=\"500\" height=\"248\" align=\"bottom\" border=\"0\" \/><\/p>\n<p>Isso acontece em situa\u00e7\u00f5es onde os arquivos das p\u00e1ginas hospedadas no servidor foram salvos usando o charset ISO-8859-1 (ou outro dos charsets pr\u00e9-unicode) e o servidor Apache est\u00e1 configurado para usar UTF-8, que \u00e9 o default no Ubuntu e na maioria das distribui\u00e7\u00f5es atuais.<\/p>\n<p>Para solucionar o impasse, voc\u00ea tem basicamente tr\u00eas op\u00e7\u00f5es. A primeira \u00e9 especificar o charset correto no header de cada p\u00e1gina do site, o que \u00e9 feito adicionando uma tag &#8220;meta&#8221; dentro da se\u00e7\u00e3o &#8220;head&#8221; da p\u00e1gina, como em:<\/p>\n<p>&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text\/html; charset=UTF-8&#8243; \/&gt;<br \/>\nou:<br \/>\n&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text\/html; charset=ISO-8859-1&#8243; \/&gt;<\/p>\n<p>Algumas vers\u00f5es antigas do Internet Explorer entendem apenas a tag &#8220;http-equiv&#8230;&#8221;. Voc\u00ea pode adicion\u00e1-la tamb\u00e9m, de forma a manter compatibilidade com elas, como em:<\/p>\n<p>&lt;http-equiv=&#8221;Content-Type&#8221; content=&#8221;text\/html; charset=utf-8&#8243;&gt;<\/p>\n<p>Continuando, a segunda op\u00e7\u00e3o \u00e9 mudar a configura\u00e7\u00e3o do Apache para que ele passe a utilizar o ISO-8859-1 como charset padr\u00e3o, em vez do UTF-8. Nas distribui\u00e7\u00f5es derivadas do Debian, isso \u00e9 definido no arquivo &#8220;<strong>\/etc\/apache2\/conf.d\/charset<\/strong>&#8220;. Edite o arquivo, substituindo a linha:<\/p>\n<p>AddDefaultCharset UTF-8<\/p>\n<p>por:<\/p>\n<p>AddDefaultCharset ISO-8859-1<\/p>\n<p>Se, por acaso, o arquivo &#8220;\/etc\/apache2\/conf.d\/charset&#8221; n\u00e3o estiver dispon\u00edvel (ou a configura\u00e7\u00e3o n\u00e3o surtir efeito), edite o arquivo &#8220;<strong>\/etc\/apache2\/apache2.conf<\/strong>&#8220;, descomentando (ou adicionando) a mesma linha.<\/p>\n<p>No Fedora\/CentOS a op\u00e7\u00e3o \u00e9 inclu\u00edda diretamente no arquivo &#8220;<strong>\/etc\/httpd\/conf\/httpd.conf<\/strong>&#8221; (perto do final do arquivo), basta substituir a linha &#8220;AddDefaultCharset UTF-8&#8221; por &#8220;AddDefaultCharset ISO-8859-1&#8221;, assim como no Debian.<\/p>\n<p>Se o servidor hospeda p\u00e1ginas escritas em portugu\u00eas, \u00e9 recomend\u00e1vel editar tamb\u00e9m a linha:<\/p>\n<p>LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw<\/p>\n<p>&#8230; no &#8220;\/etc\/apache2\/apache2.conf&#8221;, mudando a ordem das linguagens, de forma que o pt-br e o pt fiquem no in\u00edcio:<\/p>\n<p>LanguagePriority <strong>pt-br pt<\/strong> en da nl et fr de el it ja ko no pl ltz ca es sv tw<\/p>\n<p>Para que a configura\u00e7\u00e3o entre em vigor, \u00e9 preciso fazer com que o Apache 2 recarregue a configura\u00e7\u00e3o:<\/p>\n<p># \/etc\/init.d\/apache2 reload<\/p>\n<p>ou:<br \/>\n<strong># service httpd reload<\/strong><\/p>\n<p>O charset padr\u00e3o do servidor \u00e9 aplicado a todas as p\u00e1ginas onde o charset n\u00e3o \u00e9 diretamente especificado na se\u00e7\u00e3o &lt;head&gt;, ajudando em casos em que voc\u00ea tem um grande volume de p\u00e1ginas antigas, onde o charset n\u00e3o \u00e9 especificado.<\/p>\n<p>Uma terceira op\u00e7\u00e3o, mais radical, seria mudar o charset de todas as p\u00e1ginas hospedadas (se voc\u00ea usa um gestor de conte\u00fado, muitas vezes esta op\u00e7\u00e3o estar\u00e1 dispon\u00edvel nas configura\u00e7\u00f5es) de &#8220;ISO-8859-1&#8221; para &#8220;UTF-8&#8221;. Diversos editores de texto, incluindo o kwrite e o gedit, permitem trocar o charset usado, basta especificar qual quer usar nas configura\u00e7\u00f5es.<\/p>\n<p>\u00c9 poss\u00edvel tamb\u00e9m converter os arquivos diretamente, usando o comando &#8220;<strong>recode<\/strong>&#8220;, que est\u00e1 dispon\u00edvel nos reposit\u00f3rios de praticamente todas as distribui\u00e7\u00f5es que adotaram o uso do UTF8. Comece instalando o pacote, como em:<\/p>\n<p># apt-get install recode<\/p>\n<p>ou:<br \/>\n<strong># yum install recode<\/strong><\/p>\n<p>Para converter um arquivo, use o comando &#8220;recode -d ISO-8859-1..UTF-8&#8221; seguido pelo arquivo a ser convertido, como em:<\/p>\n<p>$ recode -d ISO-8859-1..UTF-8 arquivo.txt<\/p>\n<p>Voc\u00ea pode tamb\u00e9m converter de uma vez diversos arquivos, como em:<\/p>\n<p>$ recode -d ISO-8859-1..UTF-8 *.html<\/p>\n<p>ou:<br \/>\n<strong>$ recode -d ISO-8859-1..UTF-8 *.php<\/strong><\/p>\n<p>O recode n\u00e3o salva c\u00f3pias dos arquivos originais, por isso \u00e9 importante que voc\u00ea sempre execute o comando sobre uma c\u00f3pia dos arquivos, substituindo os arquivos originais s\u00f3 depois de verificar e testar. Concluindo, \u00e9 poss\u00edvel tamb\u00e9m fazer o caminho inverso, convertendo arquivos de UTF-8 para ISO-8859-1, invertendo a sintaxe do comando, como em:<\/p>\n<p>$ recode -d UTF-8..ISO-8859-1 *.html<\/p>\n<p>A principal observa\u00e7\u00e3o nesse caso \u00e9 que o recode s\u00f3 consegue converter caracteres UTF-8 que possuem um correspondente dentro da codifica\u00e7\u00e3o ISO-8859-1, por isso n\u00e3o deve ser usado em textos que incluam caracteres de l\u00ednguas asi\u00e1ticas, por exemplo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um problema muito comum ao utilizar o Apache 2 sobre uma distribui\u00e7\u00e3o Linux recente \u00e9 os caracteres acentuados das p\u00e1ginas hospedadas aparecerem trocados por interroga\u00e7\u00f5es, quadrados ou v\u00edrgulas em alguns navegadores, como nesse screenshot: Isso acontece em situa\u00e7\u00f5es onde os arquivos das p\u00e1ginas hospedadas no servidor foram salvos usando o charset ISO-8859-1 (ou outro dos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[51],"tags":[131,129,130,133,132],"class_list":["post-231","post","type-post","status-publish","format-standard","hentry","category-linux-linuxrs","tag-apache","tag-charset","tag-codificacao","tag-mysql","tag-php"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=231"}],"version-history":[{"count":2,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":233,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions\/233"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}