Codificação ASCII

176 views
Skip to first unread message

Pedro Amorim

unread,
Nov 13, 2014, 3:15:04 PM11/13/14
to php-b...@googlegroups.com
Olá a todos!

estou com um problema muito estranho na codificação de caracteres especiais (ç, ~, ´, ^, etc).
Servidor é Linux (ubuntu precise) e o banco é oracle.
Os caracteres especiais estão sendo substituídos por pontos de interrogação "?". E não é aquele que fica dentro de um losango preto.
Engraçado é que na minha máquina (localhost) fica normal, tanto com UTF-8 como ISO-8859.
Mas quando jogo o arquivo no servidor... os dados são codificados como ASCII o_0
já tentei a conversão com mb_convert_encoding(), iconv(), utf8_decode e utf8_encode, nada mudou...
<meta charset="ISO-8859-1"> 
ou
<meta charset="UTF-8"> 
ou mesmo alterando o tipo de enconde do documento pelo notepad++ para ANSI ou UFT-8 (SEM BOM)... tá difícil kkkkk
Googlando desde ontem...  =(

Alguém já resolveu este problema?





--
Pedro Luiz da Silva Amorim
Analista em Tecnologia da Informação
Secretaria da Fazenda do Tocantins / SEFAZ-TO


Diego Pires

unread,
Nov 13, 2014, 5:37:28 PM11/13/14
to php-b...@googlegroups.com
Cara,

São três ou quatro variáveis que sempre dão dor de cabeça.

Veja codificação do banco de dados, a codificação da conexão do php com o banco, a meta tag do HTML e por fim a codificação dos arquivos php.

Todos eles devem estar exatamente iguais.

Pelo que você descreveu o problema pode ser o banco de dados de desenvolvimento estar diferente do de produção.

--
Você recebeu essa mensagem porque está inscrito no grupo "php-brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para php-brasil+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para php-b...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/php-brasil.
Para mais opções, acesse https://groups.google.com/d/optout.

Guilherme Lopes

unread,
Nov 13, 2014, 11:45:11 PM11/13/14
to php-b...@googlegroups.com
Os dados estão sendo salvos no oracle ? tive um problema uma vez que o oracle por default estava vindo com utf-16, reinstalei como utf-8 e funcionou, da uma olhada qual a codificação dele

Pedro Amorim

unread,
Nov 14, 2014, 12:07:47 PM11/14/14
to php-b...@googlegroups.com
Apenas esclarecendo....

Windows (desenvolvimento) + Oracle (produção) = codificação normal (UTF-8 ou ISO)
Ubuntu(produção) + Oracle (produção) = Zica


P.S.: Opaaaaa!!! Assim que coloquei o link acima, fui eu testar mais uma vez kkkkk só para não ter a consciência pesada =)
Eu estava colocando o putenv() após oci_connect(). Vi a besteira e inverti as posições.
Parece que foi resolvido.... em partes, pq apareceram alguns "¿" simulando espaços ou tab's, não tenho certeza. Acho que o banco foi instalado com UTF-16 mesmo. E não tem como reinstalar... está fora da minha jurisdição.

Resumindo... acrescentei a linha abaixo no script de conexão.
putenv("NLS_LANG=PORTUGUESE_BRAZIL.WE8ISO8859P1") or die("Falha ao inserir a variavel de ambiente NLS_LANG");

Abraço e bom fds a todos!







Pedro Amorim

unread,
Nov 14, 2014, 12:07:47 PM11/14/14
to php-b...@googlegroups.com
P.P.S.: A desgraça da '¿' está salva no banco... Deve ser coisa de usuário... =/

$texto = str_replace('¿', '',$row['nome_coluna']);

... e pronto! Agora sim... bom fds a todos =)
Reply all
Reply to author
Forward
0 new messages