<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Beraldo &#187; acentos</title>
	<atom:link href="http://www.rberaldo.com.br/blog/tag/acentos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rberaldo.com.br/blog</link>
	<description>Programação, Música, Entretenimento e o que mais me vier à mente</description>
	<lastBuildDate>Wed, 25 Jan 2012 14:23:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Problemas com codificação: acentos não interpretados</title>
		<link>http://www.rberaldo.com.br/blog/problemas-com-codificacao-acentos-nao-interpretados/</link>
		<comments>http://www.rberaldo.com.br/blog/problemas-com-codificacao-acentos-nao-interpretados/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 12:07:38 +0000</pubDate>
		<dc:creator>Beraldo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[acentos]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[charset]]></category>
		<category><![CDATA[codificação]]></category>
		<category><![CDATA[collation]]></category>

		<guid isPermaLink="false">http://www.rberaldo.com.br/blog/?p=120</guid>
		<description><![CDATA[Um dúvida muito recorrente em fóruns concerne a erros com acentuação, quando palavras como "atenção" são exibidas como "aten??o". A solução é simples: padronizar as codificações de arquivos, do banco de dados e do HTML.]]></description>
			<content:encoded><![CDATA[<p>Um dúvida muito recorrente em fóruns concerne a erros com acentuação, quando palavras como &#8220;atenção&#8221; são exibidas como &#8220;aten??o&#8221;. A solução é simples: padronizar as codificações de arquivos, do banco de dados e do HTML.</p>
<p><span id="more-120"></span><br />
A melhor codificação a ser usada é a <a title="UTF-8" href="http://en.wikipedia.org/wiki/Utf-8" target="_blank" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Utf-8?referer=');">UTF-8</a>, que suporta diversos idiomas, e tem sido adotada como codificação padrão em diversas aplicações.</p>
<p>E importante manter todas as codificações iguais, ou seja, todas em UTF-8. Para um site, é preciso atentar para as seguintes codificações:</p>
<h3>Codificação do arquivo propriamente dito</h3>
<p>É a codificação do arquivo dentro do sistema operacional. Ela pode ser modificada por meio do seu editor de textos. Por exemplo:</p>
<p><em>Exemplo de alteração de codificação no editor Gedit</em><br />
<a href='http://img194.imageshack.us/i/encodegedit.png/' title="Clique para ampliar" onclick="urchinTracker('/outgoing/img194.imageshack.us/i/encodegedit.png/?referer=');"><img src='http://img194.imageshack.us/img194/3156/encodegedit.png' border='0' alt='Clique para ampliar'/></a><br />
</p>
<p><em>Exemplo de alteração de codificação no editor Eclipse</em><br />
<a href='http://img4.imageshack.us/i/encodeeclipse.png/' title="Clique para ampliar" onclick="urchinTracker('/outgoing/img4.imageshack.us/i/encodeeclipse.png/?referer=');"><img src='http://img4.imageshack.us/img4/9705/encodeeclipse.png' border='0' alt='Clique para ampliar'/></a></p>
<h3>Codificação do HTML</h3>
<p>A codificação do HTML é definida por meio de meta tag ou da função <a title="header()" href="http://www.php.net/manual/pt_BR/function.header.php" target="_blank" onclick="urchinTracker('/outgoing/www.php.net/manual/pt_BR/function.header.php?referer=');">header()</a>, do PHP.</p>
<p>Definição por meio de meta tag:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</pre></div></div>

<p>Definição por meio da função header(), do PHP:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Content-Type: text/html; charset=utf-8'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Codificação do banco de dados e das tabelas</h3>
<p>Se a sua aplicação usa um banco de dados, ele precisa, também, estar na codificação usada &#8211; UTF-8 no nosso caso. Ela é definida quando se criam o banco de dados e as tabelas. Por exemplo, com MySQL, podemos definir as codificação assim:</p>
<p>Codificação do banco de dados:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> bancodedados <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">CHARACTER</span> <span style="color: #993333; font-weight: bold;">SET</span> utf8 <span style="color: #993333; font-weight: bold;">COLLATE</span> utf8_general_ci;</pre></div></div>

<p>Codificação das tabelas:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> tabela<span style="color: #66cc66;">&#40;</span>
	id <span style="color: #993333; font-weight: bold;">SMALLINT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNSIGNED</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> auto_incre3ment<span style="color: #66cc66;">,</span>
	nome <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
	sobrenome <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
	<span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">CHARACTER</span> <span style="color: #993333; font-weight: bold;">SET</span> utf8 <span style="color: #993333; font-weight: bold;">COLLATE</span> utf8_general_ci;</pre></div></div>

<p>Assim, todos os campos do tipo string estarão na codificação utf8.</p>
<h3>Problemas persistentes</h3>
<p>Se você usava codificações diferentes, e, depois, modificou apenas a codificação do banco de dados, as acentuações, provavelmente, continuarão erradas. Não basta apenas mudar a codificação, nesse caso; será necessário passar os dados para outra tabela, que esteja, inicialmente, na codificação correta. É possível fazer essa transferência de dados por meio de apenas uma consulta. Para MySQWL, por exemplo, é possível usar um <a title="INSERT INTO...SELECT" href="http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html" target="_blank" onclick="urchinTracker('/outgoing/dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html?referer=');">INSERT INTO&#8230; SELECT</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rberaldo.com.br/blog/problemas-com-codificacao-acentos-nao-interpretados/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

