{"id":3222,"date":"2015-05-08T14:11:50","date_gmt":"2015-05-08T17:11:50","guid":{"rendered":"http:\/\/blog.dialhost.com.br\/?p=3222"},"modified":"2019-05-10T15:43:11","modified_gmt":"2019-05-10T18:43:11","slug":"utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/","title":{"rendered":"utf8_decode e utf8_encode tratando com codifica\u00e7\u00e3o Unicode"},"content":{"rendered":"\n<p>Ol\u00e1 pessoal, estou de volta para o terceiro post da s\u00e9rie sobre tratamento de strings com PHP. Hoje falarei um pouco sobre os comandos utf8_decode e utf8_encode, trazendo uma melhor explica\u00e7\u00e3o para o uso feito no exemplo do post passado <a href=\"http:\/\/blog.dialhost.com.br\/tecnologia\/programacao\/strlen-desvendando-os-tamanhos-de-uma-string\/\" target=\"_blank\" rel=\"noreferrer noopener\">&#8220;strlen, desvendando os tamanhos de uma string&#8221;<\/a>.<\/p>\n\n\n\n<p>S\u00f3 para lembrar, no post passado, utilizamos o comando utf8_decode para consertar a contagem de caracteres com acentua\u00e7\u00e3o. Sem a utiliza\u00e7\u00e3o deste comando, o <a href=\"http:\/\/blog.dialhost.com.br\/tecnologia\/programacao\/strlen-desvendando-os-tamanhos-de-uma-string\/\" target=\"_blank\" rel=\"noreferrer noopener\">strlen()<\/a>&nbsp;acabava contando letras acentuadas como 2 caracteres. Mas, por que o comando utf8_decode() &nbsp;resolve este problema? Que magia \u00e9 essa?<\/p>\n\n\n\n<h2>Desvendando o utf8_decode<\/h2>\n\n\n\n<p>Como a segunda palavra j\u00e1 diz, o decode funciona para decodificar um determinado dado, passado como par\u00e2metro, do formato utf8 para o ISO-8859-1. Sim, talvez o comando mais explicito seria utf-8_to_ISO-8859_decode(), mas acredito que isto seria muito grande para a fun\u00e7\u00e3o. Enfim, o fato \u00e9 que o decode se limita \u00e0 formata\u00e7\u00e3o&nbsp;ISO-8859-1, sendo assim se voc\u00ea n\u00e3o necessita utilizar este tipo de codifica\u00e7\u00e3o j\u00e1 pode parar por aqui. Talvez este artigo n\u00e3o tenha nada a lhe acrescentar.<\/p>\n\n\n\n<p><em>Dica: Se voc\u00eas est\u00e1 precisando fazer decodes com outros formatos voc\u00ea pode dar uma olhada no comando&nbsp;iconv().<\/em><\/p>\n\n\n\n<p>Para todos os outros que desejam descobrir a raz\u00e3o do caractere acentuado retornar como 2 caracteres, a explica\u00e7\u00e3o \u00e9 simples. O padr\u00e3o utf-8 utiliza um padr\u00e3o de valores entre 1 e 4 bytes, por caractere. Assim, quando temos caracteres do tipo \u00e1, \u00e9, \u00ed&#8230; os mesmos utilizam 2 bytes que s\u00e3o contados ent\u00e3o, como 2 caracteres pela fun\u00e7\u00e3o strlen();<\/p>\n\n\n\n<p><em>Dica: Se o texto a ser decodificado n\u00e3o estiver codificado em utf-8 o comando pode apresentar resultados indesejados.<\/em><\/p>\n\n\n\n<h2>O utf8_encode<\/h2>\n\n\n\n<p>O utf8_encode() faz exatamente o contr\u00e1rio da fun\u00e7\u00e3o utf8_decode, ela decodifica uma string no padr\u00e3o&nbsp;ISO-8859-1 para o padr\u00e3o utf-8. Assim uma determinada string do padr\u00e3o latino pode ser utilizada juntamente com outros caracteres sem ocorrer erros de&nbsp;renderiza\u00e7\u00e3o. Aqueles famosos caracteres de interroga\u00e7\u00e3o (\ufffd).<\/p>\n\n\n\n<p>Um Exemplo bem \u00fatil para o uso destes dois comandos \u00e9 na cria\u00e7\u00e3o de URLS amig\u00e1veis\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">function smartURL($str){\n    $str = strtolower(utf8_decode($str)); $i=1;\n    $str = strstr($str, utf8_decode('\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f8\u00f9\u00fa\u00fb\u00fd\u00fd\u00ff'), 'aaaaaaaceeeeiiiinoooooouuuyyy');\n    $str = preg_replace(\"\/([^a-z0-9])\/\",'-',utf8_encode($str));\n    while($i&gt;0) $str = str_replace('--','-',$str,$i);\n    if (substr($str, -1) == '-') $str = substr($str, 0, -1);\n    return $str;\n}<\/pre>\n\n\n\n<p>No exemplo acima o utf8_decode() foi utilizado para remover poss\u00edveis incompatibilidades com acentos e letras mai\u00fasculas. A fun\u00e7\u00e3o basicamente remove caracteres mai\u00fasculos com &nbsp;strtolower(), remove qualquer acentua\u00e7\u00e3o com strstr(). Depois ele remove qualquer caractere que n\u00e3o sejam de a-z e 0-9 utilizando o preg_replace(). Por fim, substitui-se as duplica\u00e7\u00f5es de &#8216;-&#8216; e remove um poss\u00edvel &#8216;-&#8216; no \u00faltimo caractere com str_replace &nbsp;e substr() respectivamente.<\/p>\n\n\n\n<p>Concluindo, o utf8_decode e utf8_encode s\u00e3o fun\u00e7\u00f5es auxiliares muito \u00fateis para convers\u00e3o entre caracteres latinos e o formato universal. Muitas vezes elas s\u00e3o utilizadas para tratamento de acentua\u00e7\u00f5es, e caracteres especiais inclusos no formato latino. Lembrando que se voc\u00ea n\u00e3o utiliza&nbsp;caracteres latinos, este comandos n\u00e3o ter\u00e3o nenhum efeito para sua aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Espero que tenha ajudado&nbsp;com esta explica\u00e7\u00e3o e at\u00e9 a pr\u00f3xima.\n\nTenha todo o desempenho para o seu site com a Hospedagem Cloud DialHost. Servidores em cloud prontos para receber sites em PHP. <a href=\"http:\/\/www.dialhost.com.br\/hospedagem-de-sites\/hospedagem-cloud?utm_source=DialHost&amp;utm_medium=Blog&amp;utm_campaign=Frases_Blog\" target=\"_blank\" rel=\"noreferrer noopener\">Saiba Mais<\/a>.\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\t\t\t\tHoje falarei um pouco sobre os comandos utf8_decode e utf8_encode, trazendo uma melhor explica\u00e7\u00e3o para o uso feito no exemplo do post passado &#8220;strlen, desvendando os tamanhos de uma string&#8221;.\t\t\t\t<\/p>\n","protected":false},"author":1,"featured_media":9037,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,24,12],"tags":[76,158,167,203,211],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>utf8_decode e utf8_encode tratando com codifica\u00e7\u00e3o Unicode - Blog DialHost<\/title>\n<meta name=\"description\" content=\"Descubra um pouco sobre os comandos utf8_decode e utf8_encode, trazendo uma melhor explica\u00e7\u00e3o para o seu uso e suas limita\u00e7\u00f5es.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"utf8_decode e utf8_encode tratando com codifica\u00e7\u00e3o Unicode - Blog DialHost\" \/>\n<meta property=\"og:description\" content=\"Descubra um pouco sobre os comandos utf8_decode e utf8_encode, trazendo uma melhor explica\u00e7\u00e3o para o seu uso e suas limita\u00e7\u00f5es.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-08T17:11:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-10T18:43:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2015\/05\/photo-1533709752211-118fcaf03312-1600x620.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2015\/05\/photo-1533709752211-118fcaf03312-1600x620.jpg\",\"width\":1600,\"height\":620},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\",\"name\":\"utf8_decode e utf8_encode tratando com codifica\\u00e7\\u00e3o Unicode - Blog DialHost\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#primaryimage\"},\"datePublished\":\"2015-05-08T17:11:50+00:00\",\"dateModified\":\"2019-05-10T18:43:11+00:00\",\"description\":\"Descubra um pouco sobre os comandos utf8_decode e utf8_encode, trazendo uma melhor explica\\u00e7\\u00e3o para o seu uso e suas limita\\u00e7\\u00f5es.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\",\"url\":\"\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/\",\"name\":\"utf8_decode e utf8_encode tratando com codifica\\u00e7\\u00e3o Unicode\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"utf8_decode e utf8_encode tratando com codifica\\u00e7\\u00e3o Unicode\",\"datePublished\":\"2015-05-08T17:11:50+00:00\",\"dateModified\":\"2019-05-10T18:43:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/utf8_decode-e-utf8_encode-tratando-com-codificacao-unicode\/#primaryimage\"},\"keywords\":\"desenvolvimento,noticias,php,tecnologia,utf8\",\"articleSection\":\"Dicas e Not\\u00edcias,PHP,Tecnologias\",\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/3222"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3222"}],"version-history":[{"count":0,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/3222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/9037"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}