Função PHP json_encode converte strings UTF-8 em entidades hexadecimais: por que e como resolvê-lo
A função PHP json_encode pode codificar variáveis PHP em JSON (notação de objeto JavaScript). No entanto, ao lidar com caracteres Unicode na codificação UTF-8, a função pode convertê-los em entidades hexadecimais por padrão. Isso ocorre porque o JSON não suporta nativamente caracteres UTF-8, que são caracteres multibyte que representam caracteres não ASCII.
Por que o PHP converte strings UTF-8 em entidades hexadecimais?
A função json_encode do PHP usa a especificação JSON, que determina que caracteres Unicode não representáveis como caracteres ASCII devem ser codificados usando escape hexadecimal sequências. Isso garante compatibilidade com aplicativos e dispositivos mais antigos que podem não suportar UTF-8.
Resolvendo o problema de conversão
Para resolver esse problema e evitar a conversão de UTF-8 strings para entidades hexadecimais, o PHP introduziu a opção JSON_UNESCAPED_UNICODE na versão 5.4.0. Esta opção instrui json_encode a usar pontos de código Unicode em vez de sequências de escape hexadecimais para caracteres não ASCII.
Exemplo
Suponha que você tenha o seguinte script PHP:
Este código gerará a seguinte string JSON, onde os caracteres cirílicos são codificados como entidades hexadecimais:
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
Para gerar os caracteres UTF-8 diretamente, você pode usar a opção JSON_UNESCAPED_UNICODE:
Isso produzirá a seguinte string JSON, onde os caracteres cirílicos são representados usando seus pontos de código Unicode:
"База данни грешка."
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