Rumah php教程 php手册 json_encode 中文显示问题解决方法

json_encode 中文显示问题解决方法

May 25, 2016 pm 04:52 PM
cina tunjuk

json已经成为当前web开发最常用的数据格式,php也从5.2开始支持json和数组的转换函数 json_encode 和 json_decode 。但使用过程中我们会发现,(下面以“你”这个汉字为例)通过json_encode 函数转换后的中文全部变成了类似 u4f60 (你)这样的编码,虽然不影响程序执行,但是很不直观.

首先,json_encode 对中文的处理是转成了对应的 unicode 码的十六进制表示符 u4f60,(和 js 的 escape 函数类似(%u4f60)),即 0x4f60。因此,我们只需要将 unicode 码(UCS-2)转成 utf-8 编码的汉字即可,函数如下:

<?php
/** 
 * json_encode 支持中文版
 * @param mixed $data 参数和 json_encode 完全相同
 */
function json_encode_cn($data) {
    $data = json_encode($data);
    return preg_replace("/u([0-9a-f]{4})/ie", "iconv(&#39;UCS-2&#39;, &#39;UTF-8&#39;, pack(&#39;H*&#39;, &#39;$1&#39;));", $data);
}
?>
Salin selepas log masuk

在这里,首先将目标数据转成 unicode 编码码的json串,然后利用正则将对应的 u 开头的四位字母替换成对应的文字,然后再次转码即可。preg_replace 正则中的 e 允许第二个参数执行 eval 操作,首先匹配出 uxxxx ,然后通过pack 函数将十六进制数值 xxxx 转成Unicode编码的字符,然后再将 Unicode 码转成 utf-8 码,然后就可以看到正常的汉字了。

另一种json_encode()不支持中文字符的解决方案,代码如下:

<?php
/** 
 * 对数组和标量进行 urlencode 处理
 * 通常调用 wphp_json_encode()
 * 处理 json_encode 中文显示问题
 * @param array $data
 * @return string
 */
function wphp_urlencode($data) {
    if (is_array($data) || is_object($data)) {
        foreach ($data as $k => $v) {
            if (is_scalar($v)) {
                if (is_array($data)) {
                    $data[$k] = urlencode($v);
                } else if (is_object($data)) {
                    $data->$k = urlencode($v);
                }
            } else if (is_array($data)) {
                $data[$k] = wphp_urlencode($v); //递归调用该函数
                
            } else if (is_object($data)) {
                $data->$k = wphp_urlencode($v);
            }
        }
    }
    return $data;
}
/** 
 * json 编码
 *
 * 解决中文经过 json_encode() 处理后显示不直观的情况
 * 如默认会将"中文"变成"u4e2du6587",不直观
 * 如无特殊需求,并不建议使用该函数,直接使用 json_encode 更好,省资源
 * json_encode() 的参数编码格式为 UTF-8 时方可正常工作
 *
 * @param array|object $data
 * @return array|object
 */
function ch_json_encode($data) {
    $ret = wphp_urlencode($data);
    $ret = json_encode($ret);
    return urldecode($ret);
}
?>
Salin selepas log masuk


文章地址:

转载随意^^请带上本文地址!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menetapkan bahasa Cina dalam permainan mudah alih Call of Duty: Warzone Cara menetapkan bahasa Cina dalam permainan mudah alih Call of Duty: Warzone Mar 22, 2024 am 08:41 AM

Call of Duty Warzone ialah permainan mudah alih yang baru dilancarkan Ramai pemain sangat ingin tahu tentang cara menetapkan bahasa permainan ini kepada bahasa Cina Malah, ia adalah sangat mudah ubah suai selepas menggunakannya. Kandungan terperinci boleh dipelajari dalam pengenalan kaedah tetapan bahasa Cina ini. Mari kita lihat bersama. Cara menetapkan bahasa Cina untuk permainan mudah alih Call of Duty: Warzone 1. Mula-mula masukkan permainan dan klik ikon tetapan di penjuru kanan sebelah atas antara muka. 2. Dalam bar menu yang muncul, cari pilihan [Muat Turun] dan klik padanya. 3. Pilih [SIMPLIFIEDCHINESE] (Simplified Chinese) pada halaman ini untuk memuat turun pakej pemasangan Chinese Simplified. 4. Kembali ke tetapan

Bagaimana untuk menetapkan jadual Excel untuk memaparkan bahasa Cina? Tutorial pengendalian bahasa Cina penukaran Excel Bagaimana untuk menetapkan jadual Excel untuk memaparkan bahasa Cina? Tutorial pengendalian bahasa Cina penukaran Excel Mar 14, 2024 pm 03:28 PM

Hamparan Excel adalah salah satu perisian pejabat yang ramai orang gunakan sekarang, kerana komputer mereka adalah sistem Win11, jadi antara muka bahasa Inggeris dipaparkan itu. Untuk menyelesaikan masalah ini, isu ini Editor berada di sini untuk menjawab soalan untuk semua pengguna Mari lihat kandungan yang dikongsi dalam tutorial perisian hari ini. Tutorial untuk menukar Excel kepada bahasa Cina: 1. Masukkan perisian dan klik pilihan "Fail" di sebelah kiri bar alat di bahagian atas halaman. 2. Pilih "pilihan" daripada pilihan yang diberikan di bawah. 3. Selepas memasuki antara muka baharu, klik pilihan "bahasa" di sebelah kiri

Bagaimana untuk memaparkan aksara Cina dengan betul dalam PHP Dompdf Bagaimana untuk memaparkan aksara Cina dengan betul dalam PHP Dompdf Mar 05, 2024 pm 01:03 PM

Bagaimana untuk memaparkan aksara Cina dengan betul dalam PHPDompdf Apabila menggunakan PHPDompdf untuk menjana fail PDF, adalah cabaran biasa untuk menghadapi masalah aksara Cina yang kacau-bilau. Ini kerana pustaka fon yang digunakan oleh Dompdf secara lalai tidak mengandungi set aksara Cina. Untuk memaparkan aksara Cina dengan betul, kita perlu menetapkan fon Dompdf secara manual dan pastikan untuk memilih fon yang menyokong aksara Cina. Berikut ialah beberapa langkah dan contoh kod khusus untuk menyelesaikan masalah ini: Langkah 1: Muat turun fail fon Cina Pertama, kita perlukan

Menyediakan bahasa Cina dengan VSCode: Panduan Lengkap Menyediakan bahasa Cina dengan VSCode: Panduan Lengkap Mar 25, 2024 am 11:18 AM

Persediaan VSCode dalam Bahasa Cina: Panduan Lengkap Dalam pembangunan perisian, Visual Studio Code (VSCode ringkasnya) ialah persekitaran pembangunan bersepadu yang biasa digunakan. Bagi pembangun yang menggunakan bahasa Cina, menetapkan VSCode kepada antara muka Cina boleh meningkatkan kecekapan kerja. Artikel ini akan memberi anda panduan lengkap, memperincikan cara menetapkan VSCode kepada antara muka Cina dan menyediakan contoh kod khusus. Langkah 1: Muat turun dan pasang pek bahasa Selepas membuka VSCode, klik di sebelah kiri

Cara yang berkesan untuk membetulkan aksara Cina yang kacau dalam PHP Dompdf Cara yang berkesan untuk membetulkan aksara Cina yang kacau dalam PHP Dompdf Mar 05, 2024 pm 04:45 PM

Tajuk: Cara berkesan untuk membaiki aksara Cina yang kacau dalam PHPDompdf Apabila menggunakan PHPDompdf untuk menjana dokumen PDF, aksara Cina yang kacau adalah masalah biasa. Masalah ini biasanya berpunca daripada fakta bahawa Dompdf tidak menyokong set aksara Cina secara lalai, menyebabkan kandungan Cina tidak dipaparkan dengan betul. Untuk menyelesaikan masalah ini, kita perlu mengambil beberapa cara yang berkesan untuk menyelesaikan masalah PHPDompdf Cina yang kacau. 1. Gunakan fail fon tersuai Cara yang berkesan untuk menyelesaikan masalah aksara Cina yang kacau dalam Dompdf adalah dengan menggunakan

Adakah wwe2k24 akan mempunyai bahasa Cina? Adakah wwe2k24 akan mempunyai bahasa Cina? Mar 13, 2024 pm 04:40 PM

"WWE2K24" ialah permainan sukan lumba yang dicipta oleh Visual Concepts dan dikeluarkan secara rasmi pada 9 Mac 2024. Permainan ini sangat dipuji, dan ramai pemain sangat berminat sama ada ia akan mempunyai versi Cina. Malangnya, setakat ini, "WWE2K24" masih belum melancarkan versi bahasa Cina. Adakah wwe2k24 dalam bahasa Cina Jawapan: Bahasa Cina tidak disokong pada masa ini. Versi standard WWE2K24 di rantau Steam China berharga 199 yuan, versi deluxe ialah 329 yuan, dan edisi peringatan ialah 395 yuan. Permainan ini mempunyai keperluan konfigurasi yang agak tinggi, dan terdapat piawaian tertentu dari segi pemproses, kad grafik atau memori berjalan. Konfigurasi yang disyorkan rasmi dan pengenalan konfigurasi minimum:

Petua untuk menyelesaikan aksara Cina yang kacau apabila menulis fail txt dengan PHP Petua untuk menyelesaikan aksara Cina yang kacau apabila menulis fail txt dengan PHP Mar 27, 2024 pm 01:18 PM

Petua untuk menyelesaikan aksara Cina bercelaru yang ditulis oleh PHP ke dalam fail txt Dengan perkembangan pesat Internet, PHP, sebagai bahasa pengaturcaraan yang digunakan secara meluas, digunakan oleh semakin ramai pembangun. Dalam pembangunan PHP, selalunya perlu membaca dan menulis fail teks, termasuk fail txt yang menulis kandungan bahasa Cina. Walau bagaimanapun, disebabkan masalah format pengekodan, kadangkala tulisan Cina akan kelihatan bercelaru. Artikel ini akan memperkenalkan beberapa teknik untuk menyelesaikan masalah aksara Cina bercelaru yang ditulis ke dalam fail txt oleh PHP, dan menyediakan contoh kod khusus. Analisis masalah dalam PHP, teks

Cara menetapkan penyemak imbas Quark kepada bahasa Cina dan cara menetapkan terjemahan bahasa Cina Cara menetapkan penyemak imbas Quark kepada bahasa Cina dan cara menetapkan terjemahan bahasa Cina Mar 12, 2024 pm 02:10 PM

Perisian pelayar Quark menyediakan maklumat sumber yang tidak terkira banyaknya, dan hasil carian adalah yang paling tepat Ia mempunyai enjin carian terbina dalam yang berkuasa Anda boleh mencari jawapan yang sepadan dengan memasukkan kata kunci. Bahagian semak imbas dalam medan yang berbeza terbuka Anda boleh mencari apa sahaja yang anda cari dan lihat dengan serta-merta Semua pop timbul pengiklanan yang menjengkelkan disekat dengan bebas di antara mod pelayaran yang berbeza tiada lag sama sekali dalam proses, dan sudah tentu fungsi terjemahan boleh dihidupkan Bahasa mana-mana negara boleh diterjemahkan dengan mudah, dan tidak ada masalah dalam komunikasi Fail dan dokumen yang serasi dengan pelbagai format boleh dibuka dan dilihat. Kini editor menyemak imbas untuk Quark dalam talian secara terperinci Pengguna pelayan membawa kaedah menetapkan terjemahan bahasa Cina. 1. Mula-mula klik pada desktop telefon bimbit

See all articles