"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `json_encode()` falha ao codificar aspas simples em PHP com codificação Windows-1252?

Por que `json_encode()` falha ao codificar aspas simples em PHP com codificação Windows-1252?

Publicado em 2024-11-12
Navegar:899

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

Falha no json_encode do PHP com aspas simples

Em um cenário envolvendo um objeto PHP stdClass ($post), o json_encode() funciona inesperadamente falha ao codificar a propriedade post_title, resultando em um valor nulo na saída JSON. Apesar da aparente codificação UTF-8 do banco de dados, parece que o processo de recuperação de dados pode não estar configurado corretamente.

Causa: codificação incorreta

A codificação JSON O problema decorre da codificação incorreta do caractere de aspas simples no post_title. Especificamente, o caractere é codificado em Windows-1252, resultando em um valor hexadecimal de 92, que não é um caractere UTF-8 válido.

Solução: definir codificação de conexão de banco de dados

Para resolver este problema, é necessário definir a codificação de conexão do banco de dados para UTF-8. O método utilizado depende da API empregada:

  • MySQL: mysql_set_charset("utf8")
  • MySQLi: mysqli_set_charset("utf8")
  • PDO (PHP > = 5.3.6): parâmetro charset na string de conexão
  • PDO (versões anteriores): SET NAMES utf8

Considerações Adicionais

É importante observar que definir a codificação da conexão garante que os dados recuperados do banco de dados sejam devidamente codificados em UTF-8. No entanto, se os dados forem armazenados em uma codificação incorreta, como Windows-1252, a conversão manual por meio de utf8_encode() ou outros meios pode ser necessária.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3