Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apa yang perlu dilakukan jika nod utf8 aksara Cina bercelaru
Node utf8 penyelesaian bercelaru aksara Cina: 1. Semak jenis "SarchName" melalui "typeof" 2. Gunakan kaedah "Name=iconv.decode(name,'gbk')" untuk menukar pengekodan kepada utf8 Boleh.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi nod v14.16.0, komputer DELL G3
Apa yang perlu dilakukan jika nod utf8 aksara Cina bercelaru?
node.js melaksanakan pengekodan ke GBK ke UTF8, penyelesaian kacau Cina
Saya memenuhi keperluan sebelum melakukan ini, kemudian Ia menggunakan nod untuk melakukan pertanyaan kabur nama. Sebenarnya, ini adalah perkara mudah yang tidak boleh lebih mudah lagi, tetapi saya terperangkap dalam isu ini selama dua hari.
Disebabkan keperluan perniagaan, buat pertanyaan kabur untuk fungsi baharu.
Mula-mula, saya perlu menyediakan perkhidmatan http nod, dan kemudian saya mengkonfigurasi mysql. Selepas menubuhkan model ORM, saya menemui perkara yang pelik apabila saya hendak mula menulis pernyataan SQL, kerana nod saya dikodkan dalam utf8. Walau bagaimanapun, pangkalan data syarikat kami menggunakan pengekodan GBK, yang menyebabkan ralat semasa saya melakukan pertanyaan data dan pertanyaan itu gagal.
Masalah ini juga sangat mudah, hanya transkod! ! !
Apabila saya mula menggunakan kaedah transkod nod Baidu, saya terjumpa pemalam iconv-jschardet, jadi saya pergi ke npm untuk menyemaknya. Saya mula menggunakan
const iconv = require('iconv-jschardet'); SarchName = iconv.encode(SarchName, 'gbk');
untuk menukar aksara yang dihantar dari bahagian hadapan kepada pengekodan GBK. Saya sangat gembira.
Hasilnya masih ralat. Kerana ralat ini, saya menghabiskan waktu petang mencarinya. Saya tidak tahu sama ada penukaran itu berjaya, jadi saya mencuba kaedah yang tidak terkira banyaknya tetapi masih tidak dapat menyelesaikan masalah pengekodan, jadi saya terfikir untuk menggunakan SQL untuk menukarnya kepada binari untuk padanan kabur apabila membuat pertanyaan semasa menulis PHP.
Jadi saya menaip SarchName dan ternyata ia adalah Obj. Saya sangat keliru dan fikir ia sepatutnya String. Jadi saya mencetaknya dan melihat bahawa ia adalah Penampan. Sekarang saya faham bahawa adalah lebih baik untuk tidak menukarnya terus kepada String Saya menggunakan kaedah Buffer.toString() tetapi ia masih tidak berfungsi, dan kemudian saya melihat dokumentasi. Saya mendapat tahu bahawa tiada pengekodan GBK, yang sangat menyakitkan kepala.
Kemudian saya mencuba ascii dan mendapati ia masih tidak berkesan, jadi saya mencuba binari dan ia ok.
** Pelaksanaan pertanyaan kabur selesai tanpa sebarang masalah Apabila data yang dikembalikan ditemui, ia masih dikodkan oleh GBK. Itu mudah! ! ! ! Kemudian tukar kepada utf8
Name=iconv.decode(name,'gbk')
dan kemudian kembali dan mendapati bahawa tiada masalah, kemudian ok ia selesai.
Selepas beberapa ketika, orang lain mengesan pepijat dan mengatakan bahawa nama orang itu tidak dipaparkan sepenuhnya! ! ! !
Akibatnya, simbol ini � muncul dalam beberapa nama orang. . . . .
Baidu mendapati penyahkodan tidak lengkap dan pada masa ini tiada penyelesaian. . .
Akhirnya, saya tidak mempunyai pilihan selain menggunakan kaedah indexOf('�') untuk mendapatkan semula aksara jarang
dalam rentetan, kemudian merekodkan statusnya dan kemudian menggunakan PHP untuk transkod .
Dalam satu perkataan, pit! **
Tambahan: Penukaran gbk ke utf8 Node.js masih akan gagal untuk menukar beberapa aksara yang jarang berlaku dan menyebabkan aksara bercelaru Adalah disyorkan bahawa perpustakaan dengan gbk tidak membenarkan nod melakukan perkara seperti transkod bahasa Cina dan menukar kepada sesuatu lain.
Pembelajaran yang disyorkan: "tutorial video node.js"
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika nod utf8 aksara Cina bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!