Orang sering mengatakan bahwa mereka selalu terganggu oleh masalah karakter Cina yang kacau ketika menggunakan XMLHTTP. Saya memeriksa beberapa informasi, dan hasilnya mengecewakan saya. Semua orang menggunakan teknologi sisi server ASP untuk mengatasi masalah ini.
Mari kita analisa terlebih dahulu mengapa masalah karakter Cina yang kacau ini terjadi. Alasannya sangat sederhana: ketika XMLHTTP mendapatkan Respons, ia mengasumsikan bahwa Respons tersebut dikodekan UTF8. XMLHTTP memperlakukan HTML yang berisi pengkodean GB2312 sebagai format UTF8. Oleh karena itu, karakter Cina yang kacau akan muncul.
Jadi, selain menggunakan teknologi skrip sisi server ASP, apakah tidak ada solusi sisi klien? Jawabannya adalah: ya!
Saya menggunakan skrip klien VBScript untuk berhasil mengimplementasikan metode ini tanpa menggunakan ASP, dan memecahkan masalah karakter Cina yang kacau ketika XMLHTTP merayapi halaman HTML.
Mengapa menggunakan VBScript daripada JScript yang umum digunakan? ResponBody XMLHTTP mengembalikan array byte yang tidak ditandatangani. VBScript menyediakan banyak fungsi untuk memanipulasi string dan memformat data, serta metode untuk mengakses array yang aman. Fungsi atau metode ini tidak ada di JScript. Di sini kita perlu menggunakan fungsi bawaan VBScript: MidB, AscB, LenB, dll., untuk mengakses responBody.
Untuk ngelantur, saya tidak menekankan bahwa VBScript lebih baik dari JScript, tetapi keduanya memiliki karakteristiknya masing-masing. Ini pertama kalinya saya menulis artikel di CSDN. Terima kasih atas dukungan Anda. Ada dua tujuan penulisan artikel ini: pertama, untuk melatih diri sendiri; kedua, saya berharap ketika Anda menghadapi masalah, Anda dapat belajar menganalisis masalah, menjadi sasaran, dan mengetahui apa yang terjadi dan alasannya.
Saya memberikan kode Test.htm, yang mencakup dua aplikasi: mendapatkan kodenya sendiri dan mendapatkan kode halaman web lainnya. Skrip spesifiknya adalah sebagai berikut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN ">
<!-- Penulis: Xiao Lin, [email protected] -->
<HTML>
<KEPALA>
<META http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</HEAD>
<bahasa skrip=VBScript>
Fungsi bytes2BSTR(vIn)
strKembali = ""
Untuk i = 1 Ke LenB(vIn)
KodeKar ini = AscB(MidB(vIn,i,1))
Jika ThisCharCode < &H80 Lalu
strReturn = strReturn & Chr(KodeCharIni)
Kalau tidak
KodeChar Berikutnya = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
saya = saya + 1
Akhiri Jika
Berikutnya
bytes2BSTR = strKembali
Fungsi Akhir
Fungsi viewSource1()
redupXmlHttp
atur XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Buka "GET", document.location.href, false
XmlHttp.setRequestHeader "Tipe Konten", "teks/XML"
XmlHttp.Kirim
redupkan html
html = bytes2BSTR(XmlHttp.responseBody)
kotak pesanhtml
Fungsi Akhir
Fungsi viewSource2()
redupXmlHttp
atur XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Buka "GET", " http://www.google.com ", salah
XmlHttp.setRequestHeader "Tipe Konten", "teks/XML"
XmlHttp.Kirim
redupkan html
html = bytes2BSTR(XmlHttp.responseBody)
kotak pesanhtml
Fungsi Akhir
</script>
<BODY bgcolor=gainsboro style='border:1pt solid white'>
<TABEL kelas=teks>
<tr>
<td class=text>Solusi Skrip sisi klien yang lengkap untuk karakter Cina yang kacau ketika XMLHTTP Mendapat halaman HTML</td>
</tr>
<tr>
<td class=button><button onclick=viewSource1()>Lihat kode halaman web Anda sendiri</button></td>
</tr>
<tr>
<td class=button><button onclick=viewSource2()>Lihat kode beranda Google</button></td>
</tr>
</TABEL>
</BODI>
</HTML>