Saya mengalami masalah ketika saya membuat fitur kecil hari ini. Untuk mendapatkannya lagi, tetapi ini tidak diragukan lagi akan meningkatkan efisiensi eksekusi kode lainnya.
Misalnya, seperti "karakter Cina"
Pengkodean di bawah UTF-8 adalah:%E6%B1%89%E5%AD%97
Pengkodean di bawah GB2312 adalah:%BA%BA%D7%D6 D6
Dan halaman web saya saat ini dikodekan dalam UTF-8, jadi bagaimana cara mengubah string pengkodean murni ini menjadi karakter Cina?
Pertama -tama, fungsi berikut harus dimasukkan dalam halaman saya:
Function urldecode (enstr)
Redup waduk, Strspecial
Redup c, i, v
Destr =
Strspecial =!#$%& '()*+,.
Untuk i = 1 ke len (enstr)
C = mid (enstr, i, 1)
Jika c =% maka
v = eval (& h+mid (enstr, i+1,2)))
If instr (strspecial, chr (v))> 0 lalu
Destr = Destr & Chr (V)
I = i+2
Kalau tidak
V = eval (& h+ mid (enstr, i+ 1,2)+ mid (enstr, i+ 4,2)))
deStr=deStr & Chr(v)
i=i+5
Akhiri jika
Kalau tidak
Jika c =+ maka
Destr = Destr &
Kalau tidak
Destr = Destr & C
Akhiri jika
Akhiri jika
Berikutnya
Urldecode = destr
Fungsi akhir
Fungsi di atas adalah fungsi decoding URL.
Fungsi UTF2GB (UTFSTR)
Untuk Dig = 1 ke Len (UTFSTR)
'Jika teks pengkodean UTF8 dimulai dengan%, itu akan dikonversi
Jika mid (utfstr, gali, 1) =% lalu
'Teks pengkodean UTF8 lebih besar dari 8, lalu dikonversi menjadi karakter Cina
If len (utfstr)> = Dig+8 lalu
GBSTR = GBSTR & Convchinese (Mid (UTFSTR, Dig, 9))
Dig = Dig+8
Kalau tidak
GBSTR = GBSTR & MID (UTFSTR, Dig, 1)
Akhiri jika
Kalau tidak
GBSTR = GBSTR & MID (UTFSTR, Dig, 1)
Akhiri jika
Berikutnya
UTF2GB = GBSTR
Fungsi akhir
'Teks pengkodean UTF8 akan dikonversi menjadi karakter Cina
Fungsi Convchinese (x)
A = split (mid (x, 2),%)
i = 0
j = 0
Untuk i = 0 ke ubound (a)
A (i) = c16to2 (a (i))
Berikutnya
Untuk i = 0 ke ubound (a) -1
Gali = instr (a (i), 0)
Unicode =
Untuk j = 1 untuk menggali-1
Jika j = 1 maka
A(i)=Right(A(i),Len(A(i))-DigS)
Unicode = unicode & a (i)
Kalau tidak
I = i+1
A (i) = kanan (a (i), len (a (i))-2)
Unicode = unicode & a (i)
Akhiri jika
Berikutnya
Jika len (c2to16 (unicode)) = 4 itu
Convchinese = Convchinese & Chrw (int (& H & C2TO16 (Unicode))
Kalau tidak
Convchinese = Convchinese & Chr (int (& H & C2TO16 (Unicode))
Akhiri jika
Berikutnya
Fungsi akhir
'Kode biner dikonversi ke kode heksadesimal
Fungsi c2to16 (x)
i = 1
Untuk i = 1 ke len (x) Langkah 4
C2TO16 = C2TO16 & HEX (C2TO10 (MID (X, I, 4)))
Berikutnya
Fungsi akhir
'Kode biner dikonversi ke kode desimal
Fungsi c2to10 (x)
C2TO10 = 0
Jika x = 0 maka fungsi keluar
i = 0
Untuk i = 0 ke len (x) -1
Jika mid (x, len (x) -i, 1) = 1 maka c2to10 = c2to10+2^(i)
Berikutnya
Fungsi akhir
'Kode Alkitab dikonversi ke kode biner
Fungsi c16to2 (x)
i = 0
Untuk i = 1 ke len (trim (x))
Tempstr = C10TO2 (CINT (int (& H & mid (x, i, 1)))
Lakukan sementara len (tempstr) <4
Tempstr = 0 & Tempstr
Lingkaran
C16TO2 = C16TO2 & TEMPSTR
Berikutnya
Fungsi akhir
'Kode teratas dikonversi ke kode biner
Fungsi c10to2 (x)
mySign = sgn (x)
x = abs (x)
Penggalian = 1
MELAKUKAN
Jika x <2^menggali maka
Keluar
Kalau tidak
Penggalian = penggalian+1
Akhiri jika
Lingkaran
tempnum = x
i = 0
Untuk i = menggali 1 langkah-1
Jika tempnum> = 2^(i-1) lalu
tempnum = tempnum-2^(i-1)
C10TO2 = C10TO2 & 1
Kalau tidak
C10to2 = c10to2 & 0
Akhiri jika
Berikutnya
Jika mySign = -1 maka c10to2 = -& c10to2
Fungsi akhir
Pada halaman UTF-8 normal, kita dapat menggunakannya secara langsung:
Response.Write UTF2GB (%E6%B1%89%E5%AD%97)
Artinya: UTF2GB (%E6%B1%89%E5%AD%97) = Karakter Cina
Tetapi jika halaman UTF8 saat ini memperoleh pengkodean GB (seperti%Ba%Ba%D7%D6), bagaimana kita dapat mengubahnya menjadi karakter Cina? Pada saat ini, fungsi decoding dari urldecode (Ensstr) di atas akan digunakan di atas, tetapi tidak dapat digunakan secara langsung.
<%
Session.codepage = 936 'Konversi paksa ke bawah GB2312
Dim Mykey: mykey = urldecode (%ba%ba%d7%d6) 'gb cod string
Session.codepage = 65001 'Kembali halaman kembali ke pengkodean UTF-8 lagi
Response.write (mykey)
%>
这时就获得了汉字了。 Bagaimana, sederhana, ingatlah untuk mengikuti situs ini waktu berikutnya di jarak.