{"id":1045,"date":"2012-08-03T11:29:48","date_gmt":"2012-08-03T11:29:48","guid":{"rendered":"http:\/\/leonardocotta.com.br\/blog\/?p=1045"},"modified":"2012-08-03T11:29:48","modified_gmt":"2012-08-03T11:29:48","slug":"convertendo-iso-8859-1-para-utf-8-de-forma-segura","status":"publish","type":"post","link":"https:\/\/leonardocotta.com.br\/?p=1045","title":{"rendered":"Convertendo ISO-8859-1 para UTF-8 de forma segura"},"content":{"rendered":"<div style=\"color:#4c4c4c;font-family:'Trebuchet MS', Trebuchet, Verdana, sans-serif;line-height:normal;background-color:#f6f6f6;\">\n<h3 style=\"margin:0;\">Introdu\u00e7\u00e3o<\/h3>\n<p style=\"text-align:justify;\">J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a\u00a0<a style=\"color:#de7008;\" href=\"http:\/\/rubsphp.blogspot.com.br\/2010\/10\/unicode.html\">defini\u00e7\u00e3o de unicode<\/a>,\u00a0<a style=\"color:#de7008;\" href=\"http:\/\/rubsphp.blogspot.com.br\/2011\/02\/codigos-e-simbolos-unicode.html\">fun\u00e7\u00f5es para manupular unicode<\/a>,\u00a0<a style=\"color:#de7008;\" href=\"http:\/\/rubsphp.blogspot.com.br\/2011\/07\/problemas-dom-charset-nunca-mais.html\">como utilizar unicode em todas camadas do sistema<\/a>\u00a0e\u00a0<a style=\"color:#de7008;\" href=\"http:\/\/rubsphp.blogspot.com.br\/2011\/02\/html-entities.html\">como representar os s\u00edmbolos na forma de html entities<\/a>.<\/p>\n<p style=\"text-align:justify;\">Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no caso do ISO-8859-1, preferencialmente migrado para UTF-8. Por\u00e9m, aplica\u00e7\u00f5es web est\u00e3o sujeitas a situa\u00e7\u00f5es das mais adversas, quando se trata de dados enviados pelo usu\u00e1rio. Existem casos em que um usu\u00e1rio consegue colar um texto em que parte dele deveria ser ISO-8859-1 e parte dele deveria ser UTF-8. Isso pode ocorrer ao copiar e colar trechos de aplica\u00e7\u00f5es para aplica\u00e7\u00f5es em sistemas de &#8220;origem duvidosa&#8221;, que acabam gerando uma bagun\u00e7a de bytes que, por acaso, acabam sendo enviadas para nossa aplica\u00e7\u00e3o.<\/p>\n<p style=\"text-align:justify;\">Para resolver este problema, elaborei uma fun\u00e7\u00e3o parecida com\u00a0<tt style=\"font-family:Inconsolata, Monaco, Consolas, 'Lucida Console', 'Courier New', monospace;color:#000000;\">utf8_encode<\/tt>, ou seja, converte os caracteres de ISO-8859-1 para UTF-8, por\u00e9m, caso a fun\u00e7\u00e3o identifique um caractere UTF-8 no texto, ela o mantem intacto. Portanto, ela \u00e9 \u00fatil para garantir que o texto final seja 100% UTF-8 v\u00e1lido.<\/p>\n<\/div>\n<p><a style=\"color:#de7008;font-family:'Trebuchet MS', Trebuchet, Verdana, sans-serif;line-height:normal;background-color:#f6f6f6;\" name=\"more\"><\/a><\/p>\n<div style=\"color:#4c4c4c;font-family:'Trebuchet MS', Trebuchet, Verdana, sans-serif;line-height:normal;background-color:#f6f6f6;\">\n<p style=\"text-align:justify;\">Copyright 2012 Rubens Takiguti Ribeiro<\/p>\n<p style=\"text-align:justify;\">Licen\u00e7a:\u00a0<a style=\"color:#de7008;\" href=\"http:\/\/www.gnu.org\/licenses\/lgpl-3.0.txt\">LGPL 3<\/a>\u00a0ou superior<\/p>\n<pre style=\"font-family:Inconsolata, Monaco, Consolas, 'Lucida Console', 'Courier New', monospace;background-color:#eeeeff;border-image:initial;clear:both;color:#404070;width:auto;max-height:400px;overflow-x:auto;overflow-y:auto;box-shadow:#ff0000 2px 2px 10px;-webkit-box-shadow:#ff0000 2px 2px 10px;-webkit-transition-property:background-color, color, -webkit-box-shadow;-webkit-transition-duration:1s, 1s, 1s;-webkit-transition-timing-function:initial, initial, initial;-webkit-transition-delay:initial, initial, initial;border-width:1px;border-color:#000000;border-style:solid;padding:1em;\">\/**\n * Fun\u00e7\u00e3o que converte caracteres ISO-8859-1 para UTF-8, mantendo os caracteres UTF-8 intactos.\n * @param string $texto\n * @return string\n *\/\nfunction sanitizar_utf8($texto) {\n    $saida = '';\n\n    $i = 0;\n    $len = strlen($texto);\n    while ($i &lt; $len) {\n        $char = $texto[$i++];\n        $ord  = ord($char);\n\n        \/\/ Primeiro byte 0xxxxxxx: simbolo ascii possui 1 byte\n        if (($ord &amp; 0x80) == 0x00) {\n\n            \/\/ Se e' um caractere de controle\n            if (($ord &gt;= 0 &amp;&amp; $ord &lt;= 31) || $ord == 127) {\n\n                \/\/ Incluir se for: tab, retorno de carro ou quebra de linha\n                if ($ord == 9 || $ord == 10 || $ord == 13) {\n                    $saida .= $char;\n                }\n\n            \/\/ Simbolo ASCII\n            } else {\n                $saida .= $char;\n            }\n\n        \/\/ Primeiro byte 110xxxxx ou 1110xxxx ou 11110xxx: simbolo possui 2, 3 ou 4 bytes\n        } else {\n\n            \/\/ Determinar quantidade de bytes analisando os bits da esquerda para direita\n            $bytes = 0;\n            for ($b = 7; $b &gt;= 0; $b--) {\n                $bit = $ord &amp; (1 &lt;&lt; $b);\n                if ($bit) {\n                    $bytes += 1;\n                } else {\n                    break;\n                }\n            }\n\n            switch ($bytes) {\n            case 2: \/\/ 110xxxxx 10xxxxxx\n            case 3: \/\/ 1110xxxx 10xxxxxx 10xxxxxx\n            case 4: \/\/ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n                $valido = true;\n                $saida_padrao = $char;\n                $i_inicial = $i;\n                for ($b = 1; $b &lt; $bytes; $b++) {\n                    if (!isset($texto[$i])) {\n                        $valido = false;\n                        break;\n                    }\n                    $char_extra = $texto[$i++];\n                    $ord_extra  = ord($char_extra);\n\n                    if (($ord_extra &amp; 0xC0) == 0x80) {\n                        $saida_padrao .= $char_extra;\n                    } else {\n                        $valido = false;\n                        break;\n                    }\n                }\n                if ($valido) {\n                    $saida .= $saida_padrao;\n                } else {\n                    $saida .= ($ord &lt; 0x7F || $ord &gt; 0x9F) ? utf8_encode($char) : '';\n                    $i = $i_inicial;\n                }\n                break;\n            case 1:  \/\/ 10xxxxxx: ISO-8859-1\n            default: \/\/ 11111xxx: ISO-8859-1\n                $saida .= ($ord &lt; 0x7F || $ord &gt; 0x9F) ? utf8_encode($char) : '';\n                break;\n            }\n        }\n    }\n    return $saida;\n}<\/pre>\n<\/div>\n<p>Fonte,\u00a0<a href=\"http:\/\/feedproxy.google.com\/~r\/PhpWebECoisasAssim\/~3\/e57FA4QXDTY\/convertendo-iso88591-para-utf8-de-forma-segura.html\">Convertendo ISO-8859-1 para UTF-8 de forma segura<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a\u00a0defini\u00e7\u00e3o de unicode,\u00a0fun\u00e7\u00f5es para manupular unicode,\u00a0como utilizar unicode em todas camadas do sistema\u00a0e\u00a0como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no &hellip; <a href=\"https:\/\/leonardocotta.com.br\/?p=1045\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Convertendo ISO-8859-1 para UTF-8 de forma segura<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[42],"tags":[89,102,150,267],"class_list":["post-1045","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-como-utilizar-unicode-em-todas-camadas-do-sistema-e-como-representar-os-simbolos-na-forma-de-html-entities","tag-definicao-de-unicode","tag-iso-8859-1","tag-utf8_encode"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"leonardocotta.com.br\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/leonardocotta.com.br\/?p=1045\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonardo Cotta - Rascunhos de ideias\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta\" \/>\n\t\t<meta property=\"og:description\" content=\"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/leonardocotta.com.br\/?p=1045\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-08-03T11:29:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-08-03T11:29:48+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#blogposting\",\"name\":\"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta\",\"headline\":\"Convertendo ISO-8859-1 para UTF-8 de forma segura\",\"author\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\"},\"datePublished\":\"2012-08-03T11:29:48-03:00\",\"dateModified\":\"2012-08-03T11:29:48-03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#webpage\"},\"articleSection\":\"javascript, como utilizar unicode em todas camadas do sistema e como representar os s\\u00edmbolos na forma de html entities., defini\\u00e7\\u00e3o de unicode, ISO-8859-1, utf8_encode\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/leonardocotta.com.br\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=20#listItem\",\"name\":\"programa\\u00e7\\u00e3o\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=20#listItem\",\"position\":2,\"name\":\"programa\\u00e7\\u00e3o\",\"item\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=20\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=42#listItem\",\"name\":\"javascript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=42#listItem\",\"position\":3,\"name\":\"javascript\",\"item\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=42\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#listItem\",\"name\":\"Convertendo ISO-8859-1 para UTF-8 de forma segura\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=20#listItem\",\"name\":\"programa\\u00e7\\u00e3o\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#listItem\",\"position\":4,\"name\":\"Convertendo ISO-8859-1 para UTF-8 de forma segura\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=42#listItem\",\"name\":\"javascript\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\",\"name\":\"leonardocotta.com.br\",\"description\":\"Rascunhos de ideias\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1\",\"name\":\"leonardocotta.com.br\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6c637812a6637b1b6eecffbc19c1b67e1e670e4918b4c3a7719fb134cee10e39?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"leonardocotta.com.br\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#webpage\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045\",\"name\":\"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta\",\"description\":\"Introdu\\u00e7\\u00e3o J\\u00e1 falamos v\\u00e1rias vezes sobre Unicode, desde a defini\\u00e7\\u00e3o de unicode, fun\\u00e7\\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\\u00e7\\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\\u00eancia \\u00e9 que tudo seja migrado para Unicode e, no\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=1045#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"datePublished\":\"2012-08-03T11:29:48-03:00\",\"dateModified\":\"2012-08-03T11:29:48-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#website\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/\",\"name\":\"leonardocotta.com.br\",\"description\":\"Rascunhos de ideias\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta","description":"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no","canonical_url":"https:\/\/leonardocotta.com.br\/?p=1045","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/leonardocotta.com.br\/?p=1045#blogposting","name":"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta","headline":"Convertendo ISO-8859-1 para UTF-8 de forma segura","author":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"publisher":{"@id":"https:\/\/leonardocotta.com.br\/#organization"},"datePublished":"2012-08-03T11:29:48-03:00","dateModified":"2012-08-03T11:29:48-03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/leonardocotta.com.br\/?p=1045#webpage"},"isPartOf":{"@id":"https:\/\/leonardocotta.com.br\/?p=1045#webpage"},"articleSection":"javascript, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities., defini\u00e7\u00e3o de unicode, ISO-8859-1, utf8_encode"},{"@type":"BreadcrumbList","@id":"https:\/\/leonardocotta.com.br\/?p=1045#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br#listItem","position":1,"name":"Home","item":"https:\/\/leonardocotta.com.br","nextItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=20#listItem","name":"programa\u00e7\u00e3o"}},{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=20#listItem","position":2,"name":"programa\u00e7\u00e3o","item":"https:\/\/leonardocotta.com.br\/?cat=20","nextItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=42#listItem","name":"javascript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=42#listItem","position":3,"name":"javascript","item":"https:\/\/leonardocotta.com.br\/?cat=42","nextItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?p=1045#listItem","name":"Convertendo ISO-8859-1 para UTF-8 de forma segura"},"previousItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=20#listItem","name":"programa\u00e7\u00e3o"}},{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?p=1045#listItem","position":4,"name":"Convertendo ISO-8859-1 para UTF-8 de forma segura","previousItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=42#listItem","name":"javascript"}}]},{"@type":"Organization","@id":"https:\/\/leonardocotta.com.br\/#organization","name":"leonardocotta.com.br","description":"Rascunhos de ideias","url":"https:\/\/leonardocotta.com.br\/"},{"@type":"Person","@id":"https:\/\/leonardocotta.com.br\/?author=1#author","url":"https:\/\/leonardocotta.com.br\/?author=1","name":"leonardocotta.com.br","image":{"@type":"ImageObject","@id":"https:\/\/leonardocotta.com.br\/?p=1045#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/6c637812a6637b1b6eecffbc19c1b67e1e670e4918b4c3a7719fb134cee10e39?s=96&d=mm&r=g","width":96,"height":96,"caption":"leonardocotta.com.br"}},{"@type":"WebPage","@id":"https:\/\/leonardocotta.com.br\/?p=1045#webpage","url":"https:\/\/leonardocotta.com.br\/?p=1045","name":"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta","description":"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/leonardocotta.com.br\/#website"},"breadcrumb":{"@id":"https:\/\/leonardocotta.com.br\/?p=1045#breadcrumblist"},"author":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"creator":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"datePublished":"2012-08-03T11:29:48-03:00","dateModified":"2012-08-03T11:29:48-03:00"},{"@type":"WebSite","@id":"https:\/\/leonardocotta.com.br\/#website","url":"https:\/\/leonardocotta.com.br\/","name":"leonardocotta.com.br","description":"Rascunhos de ideias","inLanguage":"en-US","publisher":{"@id":"https:\/\/leonardocotta.com.br\/#organization"}}]},"og:locale":"en_US","og:site_name":"Leonardo Cotta - Rascunhos de ideias","og:type":"article","og:title":"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta","og:description":"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no","og:url":"https:\/\/leonardocotta.com.br\/?p=1045","article:published_time":"2012-08-03T11:29:48+00:00","article:modified_time":"2012-08-03T11:29:48+00:00","twitter:card":"summary_large_image","twitter:title":"Convertendo ISO-8859-1 para UTF-8 de forma segura - Leonardo Cotta","twitter:description":"Introdu\u00e7\u00e3o J\u00e1 falamos v\u00e1rias vezes sobre Unicode, desde a defini\u00e7\u00e3o de unicode, fun\u00e7\u00f5es para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os s\u00edmbolos na forma de html entities. Sabemos que ISO-8859-1 foi uma codifica\u00e7\u00e3o muito utilizada antes do surgimento do Unicode, mas que a tend\u00eancia \u00e9 que tudo seja migrado para Unicode e, no"},"aioseo_meta_data":{"post_id":"1045","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2024-02-26 14:09:06","updated":"2025-06-04 14:12:02","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/leonardocotta.com.br\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/leonardocotta.com.br\/?cat=20\" title=\"programa\u00e7\u00e3o\">programa\u00e7\u00e3o<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/leonardocotta.com.br\/?cat=42\" title=\"javascript\">javascript<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tConvertendo ISO-8859-1 para UTF-8 de forma segura\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/leonardocotta.com.br"},{"label":"programa\u00e7\u00e3o","link":"https:\/\/leonardocotta.com.br\/?cat=20"},{"label":"javascript","link":"https:\/\/leonardocotta.com.br\/?cat=42"},{"label":"Convertendo ISO-8859-1 para UTF-8 de forma segura","link":"https:\/\/leonardocotta.com.br\/?p=1045"}],"_links":{"self":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1045"}],"version-history":[{"count":0,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1045\/revisions"}],"wp:attachment":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}