Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau-bilau yang dihantar dari ajax ke latar belakang php
Penyelesaian kepada kod kacau Cina yang dihantar dari ajax ke latar belakang php: 1. Tetapkan "iconv('utf-8','gb2312',$_POST['Data']);"; arrayRecursive dan JSON Kaedah ini boleh menyelesaikan masalah pengekodan.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3.
Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau dalam ajax yang dihantar ke php latar belakang?
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 pemindahan data gunakan utf- 8 Encode dan hantar!Jika halaman kami adalah UTF-8, tiada masalah data Cina yang diluluskan tidak akan bercelaru!Jika ia adalah GB2312~masalah itu datang! ! GBK Selepas ditukar kepada UTF-8 dan dihantar ke latar belakang, apa yang diterima secara langsung oleh latar belakang menjadi kacau bilau! gb2312' ,$_POST['Data']);)Prinsipnya sangat mudah: penerimaan langsung di latar belakang ialah utf-8, dan halaman semuanya GBK, maka anda hanya perlu menukar menerima data kembali ke GBK!Anda hanya boleh melakukan operasi pangkalan data pada masa ini! 🎜>2. Halaman belakang Data yang dibaca dalam pangkalan data mengandungi aksara Cina, dan kemudiannya dihantar semula ke bahagian hadapan JSHalaman PHP membaca aksara Cina biasa daripada pangkalan data dan ingin menghantar. itu kembali melalui AJAX.
Tetapi data latar belakang kami Secara amnya, ia perlu dibungkus Jika tidak, data yang diterima oleh bahagian hadapan akan menjadi sukar untuk diproses
Maka kami biasanya menggunakan JSON! penghantaran sekarang! Dengan cara ini, data yang dihantar ke bahagian hadapan JS akan menjadi sangat mudah untuk dibongkar Dan dikendalikan!Apabila melakukan operasi penukaran json dalam latar belakang PHP, masalah timbul!
Apabila menukar json, anda akan mendapati bahawa NULL atau keadaan abnormal lain muncul dalam bahasa Cina yang dibaca daripada pangkalan data , ini kerana JSON hanya terlepas daripada pengekodan itu
Bagaimanapun, JSON akan melakukannya! menjadi kacau bilau apabila ditukar kepada bahasa Cina~~
Penyelesaian adalah seperti berikut: Selepas proses ini, anda akan mendapati bahawa Aksara Cina yang dibaca daripada pangkalan data oleh PHP latar belakang berjaya ditukar kepada format json dan paparan bahasa Cina adalah normal!Sudah tentu data yang diterima oleh meja depan pada masa ini adalah dalam format JSON dan aksara Cina adalah normal !
Baiklah~~ Ini adalah idea-idea~ Terdapat banyak kaedah dalam talian Agak menarik untuk melihat Chaos~ 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 lihat sahaja fungsi dan kaedah yang perlu digunakan untuk menyelesaikan masalah pengekodan yang berkaitan!
Lebih menjengkelkan bahawa AJAX bahagian hadapan JS perlu ditranskodkan lagi Penyahkodan beberapa kali!
Apa yang saya tulis setakat ini adalah sah di bawah syarat kod bahasa latar belakang PHP.
Malah GBK di bahagian hadapan tidak digunakan untuk sebarang Operasi transcoding, anda hanya perlu membuat penukaran yang berkaitan dalam kod PHP latar belakang!!
Pembelajaran yang disyorkan: "
Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau-bilau yang dihantar dari ajax ke latar belakang php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!