"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 a função json_encode do PHP converte strings UTF-8 em entidades hexadecimais?

Por que a função json_encode do PHP converte strings UTF-8 em entidades hexadecimais?

Publicado em 2024-11-11
Navegar:816

Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

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:

"База данни грешка."
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