flaviomicheletti Postado Novembro 23, 2009 Denunciar Share Postado Novembro 23, 2009 A função substr retorna caracter curinga quando o último caracter é acentuado.Veja código abaixo.Alguém, por gentilza, poderia me ajudar?<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> </head> <body> <p> <?PHP $string_qualquer = "Flávio Micheletti"; echo substr($string_qualquer,0, 3); // retorna "Fl?"; ?> </p> </body> </html>Informação adicionais:XP SP3PHP 5.3.0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 SK15 Postado Novembro 23, 2009 Denunciar Share Postado Novembro 23, 2009 Isso é problema de HTML e não PHP, troque o charset ... tipo para o nosso pardão ....Ou salve seus arquivos em modo "UTF-8" ...<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flaviomicheletti Postado Novembro 24, 2009 Autor Denunciar Share Postado Novembro 24, 2009 Isso é problema de HTML e não PHP, troque o charset ... tipo para o nosso pardão ....Ou salve seus arquivos em modo "UTF-8" ...<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />Oi SK15, obrigado pela resposta.Num ponto você acertou: se mudamos o charset para ISO-8859-1 funciona.Só que por padrão o projeto inteiro está em utf-8, logo não posso mudar apenas este script.Talvez seja o forma como eu estou salvando meu arquivo...No NETBeans 6.7.1 eu vou no menu "Arquivo -> Projeto Properties -> Codificação -> UTF-8No Dreamweaver 2004 eu digito "CTRL+j" e em "document encoding" está configurado "Unicode(UTF-8)".Salvo, resalvo, crio um novo arquivo e nada.você conhece alguma forma mais explícita ou eficaz para salvar o documento em UTF-8?Pois continuo com o mesmo problema.Abs. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Novembro 24, 2009 Denunciar Share Postado Novembro 24, 2009 olá Flávio...já deu uma olhada em utf8_decode() e uft8_encode() ?...acredito que se você colocar em suas variáveis.. resolverá o seu problema..abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flaviomicheletti Postado Novembro 25, 2009 Autor Denunciar Share Postado Novembro 25, 2009 olá Flávio...já deu uma olhada em utf8_decode() e uft8_encode() ?...acredito que se você colocar em suas variáveis.. resolverá o seu problema..abraços-- PALIATIVO --Oi MTavares, você acertou, funcionou.Mas acho que isso é uma medida apenas paliativa.Dê uma olha no código como ficou<?php header('Content-type: text/html; charset="utf-8"',true); $string_qualquer = "flávio"; $str_iso = iconv("utf-8", "ISO-8859-1", $string_qualquer); //$str_iso = utf8_decode($string_qualquer); # mesmo efeito que a linha acima $str_apos_substr = substr($str_iso, 0, 3); $volta_para_utf8 = iconv("ISO-8859-1", "utf-8", $str_apos_substr); //$volta_para_utf8 = utf8_encode($str_apos_substr); # mesmo efeito que a linha acima echo $volta_para_utf8; // print flá ?>A impressão que eu tenho é que "internamente" ele(o php) está se atrapalhando quando a codificação é utf-8.Acho que isso deve ser alguma questão relativa com a CONFIGURAÇÂO DO SERVIDOR(APACHE) ou configuração do próprio sistema operacional.Minha área de desenvolvimento é winxp sp3, e o servidor web que eu disponibilizo o sistema é linux, está hospedado na dialhost, mas eu tenho o mesmo resultado nos dois locais(web e localhost).Ainda estou procurando uma solução.Obrigado por enquanto. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 Tenta usar:setlocale(LC_CTYPE,pt_BR); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flaviomicheletti Postado Novembro 25, 2009 Autor Denunciar Share Postado Novembro 25, 2009 Tenta usar:setlocale(LC_CTYPE,pt_BR);Não deu certo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 Então pode descartar problema no servidor/PHP... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flaviomicheletti Postado Novembro 25, 2009 Autor Denunciar Share Postado Novembro 25, 2009 Solução eleganteUm colega de equipe achou uma solução satisfatória:<?php header('Content-type: text/html; charset="utf-8"',true); $string_qualquer = "flávio"; echo mb_substr($string_qualquer, 0, 3, 'utf-8'); // print flá ?> Veja mais em http://br.php.net/manual/pt_BR/function.mb-substr.php À todos que responderam um muitíssimo obrigado. Fica dois pontos para se pensar à respeito... 1) Talves dê para configurar o servidor com a codificação desejada, no caso utf-8. 2) Uma outra função que apresentou o mesmo problema file_put_contents Resolvi da seguinte forma: file_put_contents(utf8_decode($nome_arquivo), $conteudo);obs: Trabalhar com utf-8 não é brincadeira não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
flaviomicheletti
A função substr retorna caracter curinga quando o último caracter é acentuado.
Veja código abaixo.
Alguém, por gentilza, poderia me ajudar?
Informação adicionais:
XP SP3
PHP 5.3.0
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.