Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, estou com um problema.
Tive a necessidade de usar uma função pra converter letras pra maiúsculas, já que só o strtoupper não convertia os queridos acentos que a nossa lingua tem.
a função que uso é esta:
<?php
function upper ($str) {
$LATIN_UC_CHARS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜݰ°ª";
$LATIN_LC_CHARS = "àáâãäåæçèéêëìíîïðñòóôõöøùúûüý°ºª";
$str = strtr ($str, $LATIN_LC_CHARS, $LATIN_UC_CHARS);
$str = strtoupper($str);
return $str;
}
?>
ok, funcionando, inclusive aqueles caracteres especiais "°°ª" tive que que colocar porque eles estavam se transformando em outro caractere estranho.
Mas enfim, o problema que encontrei é que quando eu digito no campo que uso esta função a letra "Ú", ele transforma ela em "Ê", e quando digito ú, ele transforma nisso: ð
Por exemplo, se quero digitar JÚNIOR, ele transforma em JÊNIOR.
Já tentei arrumar e não consegui, alguém tem idéia de como arrumar esse erro?
Desde já, obrigado.
Héverton
coloca no inicio do arquivo
//define a codificação de caracteres
header("Content-Type: text/html; charset=ISO-8859-1",true);
e depois use a função strtoupper
$string = "aeioúéáípagyjk";
echo strtoupper($string);<?php
echo strtoupper( iconv( 'UTF-8', 'ISO-8859-1//TRANSLIT', 'àáâãäåæçèéêëìíîïðñòóôõöøùúûüý°ºª' ) );
// ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜݰºª
?>
obrigado. Mas tentei todas essas formas e sempre tem problema em algum acento.
Eu estou achando que o problema é porque meu form é enviado por ajax, com jquery.post
alguém tem idéia de como resolver?
no post #2 o @lambrusco perguntou sobre qual encoding está usando
se puder explicar, alguém poderá ajudá-lo
tenho o arquivo php com charset:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
e nele tem:
$.post("include/ajax-socios-inserir-enderecos.php", {
campos aqui
}
e o arquivo ajax-socios-inserir-enderecos.php
não tem charset nenhum.
dentro dele tem as variáveis que recebe os valores:
if(isset($_POST["bairro"])) $bairro = upper($_POST["bairro"]);
essa função upper é a que postei no primeiro post, que está em um include.
tente colocar utf8_decode ou utf8_encode
onde faz o recebimento da variável com problema.
Verifique a codificação que os arquivos foram salvos.
Você está usando o arquivo em Uft8 ou ISO-8859 ???
tente passar o arquivo para ANSI ou ISO-8859-1
use essa função caso queira manter em utf8
function utf8($texto){ $acentos = array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç", "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç"); $utf8 = array("á","à ","â","ã","ä","é","è","ê","ë","Ã","ì","î","ï","ó","ò","ô","õ","ö","ú","ù","û","ü","ç","Ã","À","Â","Ã","Ä","É","È","Ê","Ë","Ã","ÃŒ","ÃŽ","Ã","Ó","Ã’","Ô","Õ","Ö","Ú","Ù","Û","Ü","Ç"); $result = str_replace($utf8, $acentos, $texto); return $result; }