Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Encoding PHP

Olá, pessoal! Boa tarde!

Estou puxando algum dados do meu banco de dados, porém ao tentar exibi-los no HTML, aparece o carácter "?" (literalmente um ponto de interrogação, não a imagem do cubo com um ponto de interrogação) no lugar de caracteres como "ã" e "ç". O resultado que estou tentando exibir é "Solicitação de Cartão". Ao tentar fazer a consulta direto no BD usando a ferramenta SQL Developer, o dado é retornado com a acentuação certinha. Porém ao fazer a consulta por meio do PHP, retornar o erro que mencionei acima.

Usei o XAMPP para instalar o PHP e o Apache na minha máquina. Ativei a extensão OCI8 e tudo mais... Será que tem alguma configuração que eu precise fazer dentro do próprio PHP.ini/ Apache/Xampp?

Já tentei ut8_encode, ut8_decode, mb_convert_enconding, ativar o default_charset do php.ini.

3 respostas

Eu geralmente utilizo o utf8_decode para salvar os dados na tabela, e para exibir, eu utilizo o utf8_encode. Pelo que eu entendi, no banco de dados os acentos estão corretos.

Uma coisa que pode ser é a codificação do seu arquivo PHP. Se você vai utilizar UTF-8, o arquivo precisa ser salvo com este tipo de "encoding"

Aqui tem uma discussão onde se mostra como isso funciona:

https://forum.imasters.com.br/topic/510576-erro-acentos-trocado-por-interroga%C3%A7%C3%A3o/

Olá, Dani! Bom dia!

A codificação do meu arquivo está como UTF-8 mesmo... Acredito que o problema esteja na configuração do ambiente Apache + PHP pois no banco de dados o dado está certo, e caso eu tente inserir ele manualmente com acentuação direto no PHP, funciona também.

Pelo que verifiquei o problema está no meio de caminho entre o PHP e o BD; quando abro o DevTools do Google, vejo que o retorno do arquivo PHP já vem com o ponto de interrogação (o que explica o fato do utf8_encode não estar funcionando)

A questão é, como corrigir essa transmissão de informação? Posso fazer isso dentro do meu arquivo PHP?

Informação adicional: Ativei a extensão oci8 usando o Oracle Instant Client

solução!

Resolvido com putenv("NLS_LANG=AMERICAN_AMERICA.AL32UTF8"); ;)