Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah yang perlu saya lakukan jika php ajax memperoleh aksara Cina yang kacau?

Apakah yang perlu saya lakukan jika php ajax memperoleh aksara Cina yang kacau?

藏色散人
藏色散人asal
2021-09-14 11:17:032318semak imbas

Penyelesaian untuk php ajax untuk mendapatkan aksara Cina yang kacau: 1. Jalankan kod "iconv('utf-8','gb2312',$_POST['Data']);)"; pangkalan data melalui PHP Hanya baca aksara Cina dan tukarkannya ke dalam format json.

Apakah yang perlu saya lakukan jika php ajax memperoleh aksara Cina yang kacau?

Persekitaran pengendalian artikel ini: sistem windows7, versi PHP7.1, komputer DELL G3

Apakah yang perlu saya lakukan jika php ajax memperoleh aksara Cina yang kacau?

Penyelesaian kepada aksara Cina yang kacau-bilau dalam aplikasi AJAX dalam PHP

Watak yang kacau-bilau Cina sering muncul dalam pembangunan aplikasi web!

Hari ini saya akan terutamanya menyelesaikan idea saya :

Kebanyakan kes di mana watak bercelaru muncul adalah apa yang kita hadapi semasa melakukan AJAX Kerana pembacaan pangkalan data langsung tidak mempunyai sebarang masalah pengekodan~

1. Apabila menyerahkan data dari JS bahagian hadapan ke bahagian belakang

data AJAX, sama ada ia secara langsung menggunakan xmlHttprequest yang mendasari atau menggunakan ajax jQuery untuk menghantar data akan menggunakan utf-8 untuk mengekod dan hantar!

Jika halaman kami adalah UTF-8, maka tiada masalah data Cina yang diluluskan tidak akan kacau!

Jika ia adalah GB2312, masalah akan timbul! ditukar kepada UTF-8 Dihantar ke latar belakang, apa yang diterima secara langsung oleh latar belakang menjadi kacau bilau! _POST['Data ']);)

Prinsipnya sangat mudah: penerimaan langsung di latar belakang ialah utf-8, dan halamannya semuanya GBK, kemudian tukarkan semula data yang diterima kepada GBK!

Hanya lakukan operasi pangkalan data pada masa ini. Apa yang disimpan dalam pangkalan data mestilah aksara Cina biasa

2 mengandungi aksara Cina Aksara, apabila ia dihantar semula ke bahagian hadapan JS pada masa ini

Halaman PHP membaca aksara Cina biasa daripada pangkalan data dan mahu menghantarnya kembali melalui AJAX~

Jika ia dihantar kembali, hanya Data dihantar kembali secara terus dalam bentuk rentetan tanpa sebarang pemprosesan. Semuanya dalam bahasa Cina dipaparkan di halaman depan seperti biasa!

Tetapi secara amnya kami perlu membungkus! data latar belakang! Jika tidak, data yang diterima oleh meja depan akan menjadi sukar untuk dikendalikan!

Jika ia adalah PHP, maka kami biasanya menggunakan JSON untuk penghantaran sekarang! JS bahagian hadapan akan menjadi sangat mudah untuk dibongkar dan dikendalikan!

Dalam latar belakang PHP Masalah timbul apabila melakukan operasi penukaran json

Apabila menukar json, anda akan mendapati NULL itu atau yang lain keadaan tidak normal muncul dalam bahasa Cina yang dibaca daripada pangkalan data Ini kerana JSON hanya terlepas daripada pengekodan! 🎜>

Penyelesaian adalah seperti berikut:

Selepas proses ini, anda akan mendapati bahawa aksara Cina yang dibaca oleh PHP latar belakang daripada pangkalan data berjaya ditukar menjadi json format dan paparan bahasa Cina adalah normal!

Sudah tentu, data yang diterima oleh meja depan pada masa ini adalah dalam format JSON dan dalam bahasa Cina 🎜>Baiklah~~ Ini adalah idea-idea~ Terdapat banyak kaedah dalam talian Agak mengelirukan~ Perkara utama adalah untuk mengingati idea-idea!
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
 {
     static $recursive_counter = 0;
     if (++$recursive_counter > 1000) {
         die('possible deep recursion attack');
     }
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             arrayRecursive($array[$key], $function, $apply_to_keys_also);
         } else {
             $array[$key] = $function($value);
         }
   
         if ($apply_to_keys_also && is_string($key)) {
             $new_key = $function($key);
             if ($new_key != $key) {
                 $array[$new_key] = $array[$key];
                 unset($array[$key]);
             }
         }
     }
     $recursive_counter--;
 }
 function JSON($array) {
     arrayRecursive($array, 'urlencode', true);
     $json = json_encode($array);
     return urldecode($json);
 }
$json_string=JSON($data);
//$obj = json_decode($json_string);
print_r($json_string);

Kemudian gunakannya Hanya gunakan kaedah apa untuk menyelesaikan masalah pengekodan yang berkaitan!

Memang menjengkelkan bahawa AJAX bahagian hadapan JS perlu ditranskodkan di latar belakang malah ada yang perlu ditranskodkan dua kali!

Pada masa ini I Ini semua sah dalam konteks PHP! kod bahasa hujung belakang. Tutorial Video

"

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika php ajax memperoleh aksara Cina yang kacau?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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