Memahami Bagaimana IIS Memproses Pengkodean ASP
Seperti semua masalah penyandian di ASP Klasik, ini membantu untuk memahami tujuan apa yang dipenuhi oleh berbagai perintah (karena terlalu sering orang menggunakannya secara tidak benar, karena tampaknya menyelesaikan masalah) .
<%@ Language = "VBScript" CodePage = 65001 %>
Baris ini biasanya disalahpahami, sintaksnya <%@
adalah "ASP @ Processing Directive" dan berfungsi untuk memberi tahu IIS cara memproses halaman ASP dan mungkin merupakan salah satu perintah terpenting dalam hal bekerja dengan pengkodean dengan benar.
-
@Language
memberi tahu IIS Bahasa Skrip Aktif terdaftar apa yang harus digunakan untuk memproses Halaman ASP. -
@CodePage
memberitahu IIS CodePage apa yang harus digunakan untuk memproses Halaman ASP. Jika halaman telah disimpan menggunakanUTF-8
maka IIS perlu tahu saat memproses halaman itu harus menggunakan CodePage65001
(atau dikenal sebagaiUTF-8
) .
Artinya @CodePage
harus selalu cocok dengan penyandian fisik yang digunakan saat halaman dibuat. Anda mungkin perlu menggunakan editor teks tingkat lanjut untuk menyelesaikannya, beberapa contohnya adalah Notepad++
(menampilkan encoding pada status bar di kanan bawah jendela GUI) dan Visual Studio
(Memiliki perintah menu tersembunyi yang disebut Advanced Save Options
yang dapat diakses dengan menyesuaikan bilah menu) .
<% Response.CodePage = 65001 %>
Sekali lagi sering disalahpahami, tujuan dari perintah ini adalah untuk memberi tahu IIS bagaimana string dinamis harus dikodekan (dengan string dinamis yang kami maksud adalah apa pun yang dikeluarkan menggunakan Response.Write()
) . Mungkin bagian terpenting dari keseluruhan proses, jika disetel secara tidak benar atau diasumsikan ketidakcocokan penyandian dapat dan memang terjadi.
<% Response.CharSet = "UTF-8" %>
Perintah ini menetapkan ;charset=utf-8
di Content-Type
Header HTTP ketika respons dikirim dari Server ke Browser Klien, ini memberi tahu Browser bahwa respons ini harus diproses sebagai UTF-8
daripada kode default. Artinya seperti
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
berlebihan dan tidak boleh digunakan. Juga perlu diperhatikan ada perintah untuk Content-Type
Header HTTP juga
Response.ContentType = "text/html"
membuatnya lebih berlebihan dari sebelumnya.