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.
-
@Languagememberi tahu IIS Bahasa Skrip Aktif terdaftar apa yang harus digunakan untuk memproses Halaman ASP. -
@CodePagememberitahu IIS CodePage apa yang harus digunakan untuk memproses Halaman ASP. Jika halaman telah disimpan menggunakanUTF-8maka 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.