Saya telah mempelajari pengkodean UTF-8 selama beberapa hari terakhir dan saya sangat bingung. Saya akan mendiskusikan pendapat saya dengan Anda. Selamat datang untuk menyetujui. Berikut ini adalah pemikiran saya. Jika ada yang salah, mohon pencerahannya dan bantu saya menunjukkannya.
Penyimpangan terkait:
1. Sistem operasi
Sistem jendela semuanya unicode secara internal. Nama folder, nama file, dll. semuanya unicode dan dapat ditampilkan secara normal dalam sistem bahasa apa pun.
2. Metode masukan:
Output Microsoft Pinyin adalah Unicode, dan output Smart ABC adalah bahasa Mandarin Sederhana (sehingga Smart ABC tidak dapat digunakan sama sekali di sistem non-China Sederhana, dan hanya dapat mengetik dalam bahasa Inggris).
3. Textarea halaman web
Textarea halaman web ditampilkan dalam unicode. Jadi apa pun yang Anda ketikkan akan ditampilkan. Namun beberapa kotak input yang dibuat dengan flash tidak akan berfungsi.
4. Akses2000
Data yang disimpan dalam akses bersifat unicode dan dapat ditampilkan dalam sistem bahasa apa pun.
Jika ada beberapa karakter yang tidak normal jika dilihat pada tampilan data, hal ini disebabkan karena font yang digunakan untuk tampilan bukan font Unicode.
Ubah ke font Arial Unicode MS untuk menampilkan semuanya. (akses bantuan, cari, masukkan unicode, instruksi tersedia)
5. Kata
Konversi antara Mandarin Tradisional dan Mandarin Sederhana di Word. Setelah mengonversi dari Mandarin Sederhana ke Mandarin Tradisional, kode internalnya masih berupa karakter Mandarin Sederhana.
6. ASP secara internal adalah Unicode, dan semua teks disimpan dalam Unicode. Konversikan ke kumpulan karakter yang ditentukan bila perlu.
Pertama mari kita tarik kesimpulannya:
<%@ codepage=936%>Bahasa Mandarin Sederhana
<%@ codepage=950%>Bahasa Cina Tradisional
<%@ halaman kode=65001%>UTF-8
Halaman kode menentukan pengkodean di mana IIS membaca string yang diteruskan (pengiriman formulir, transmisi bilah alamat, dll.).
Juga menentukan pengkodean semua variabel teks yang dikonversi dari Unicode,
Ini juga menentukan pengkodean dimana data yang diambil dari database dikonversi dari Unicode. (Perhatikan ini, ini sangat penting.)
Kata kunci:
Bacaan: Sebuah string, jika dibaca dalam bahasa Cina Sederhana akan berupa beberapa karakter, jika dibaca dalam bahasa Cina Tradisional akan berupa beberapa karakter, pengkodean string itu sendiri tidak berubah.
Konversi: Sistem secara aktif mengkonversi, misalnya, dari karakter "化" Unicode ke karakter "化" Big5, kode internal menjadi milik Big5. Jika tidak ada kata yang sesuai di Big5, bentuk Unicode dipertahankan (&#xxxx;)
Bahasa Cina Sederhana: Enam kesimpulan
Bentuk heksadesimal unicode: enam kesimpulan
Bentuk desimal unicode: enam kesimpulan
Berikut ini adalah proses konversi pengkodean yang saya spekulasikan:
Klien: metode masukan Unicode--kotak masukan unicode--konversi dari Unicode ke pengkodean yang sesuai dengan charset()--pengkodean pengiriman formulir
Sisi server: IIS mendekode formulir--membaca sesuai dengan pengkodean yang ditentukan oleh halaman kode--mengonversi ke Unicode yang sesuai--dapat dibaca dengan permintaan("")--melakukan beberapa pemrosesan--menyimpan ke database dalam pengkodean Unicode
Sisi server: Baca data Unicode dari database dan konversikan ke pengkodean yang ditentukan oleh halaman kode --- buat kode sumber -- IE membaca dan menampilkannya sesuai dengan rangkaian karakter.
Berikut beberapa contohnya:
Contoh 1:
Asumsikan ada tiga halaman asp, halaman pesan yang khas:
1.write.asp adalah formulir masukan sederhana dan dikirimkan ke add.asp.
<META http-equiv="Jenis Konten" content="teks/html; charset=big5">
2.add.asp menerima pesan dan menyimpannya ke database
<%@ halaman kode=936%>
3.read.asp mengambil pesan dari database dan menampilkannya.
<%@ codepage=936%> rangkaian karakter=GB2312 atau
<%@ halaman kode=950%> rangkaian karakter=big5
Anda bisa menebaknya. Saya menggunakan metode input Microsoft Pinyin untuk memasukkan "Diskusi Hua Liu" di write.asp. Apa yang pada akhirnya akan ditampilkan di read.asp?
Apa anda pusing? Mari kita analisa dari awal.
Contoh 2:
Apa jadinya jika kita mengubah <%@ codepage=936%> di add.asp pada Contoh 1 menjadi <%@ codepage=950%>?
Apa yang kamu temukan di sini?
1. Jika teks masukan berbeda dari Charset terkait, setelah dikonversi, karakter dalam bentuk Unicode mungkin muncul. Inilah alasannya. Seluruh proses dipertahankan mulai sekarang.
2. Halaman kode di Add.asp menentukan teks yang disimpan ke database dan bahasa apa yang sesuai dengan Unicode.
Kemudian database menyimpan Unicode China Sederhana (database mendapatkan kembali sistem China Sederhana, semuanya normal),
Codepage=950 menyimpan Unicode Cina Tradisional. (Adalah salah jika mengambil kembali sistem Cina Sederhana).
3. Perhatikan proses perubahan string:
1) Metode input --- CharsetUnicode---- menentukan pemetaan kumpulan karakter
2)Charset----bentuk pengkodean string pengkodean sederhana
3) Proses kebalikan dari langkah decoding formulir sebelumnya, kedua langkah tersebut diimbangi.
4) String à tekan halaman kode untuk membaca string dan string tidak berubah. Langkah ini dapat menyebabkan "kesalahpahaman membaca"
5) Konversikan ke kumpulan karakter yang ditentukan Unicode Codepage yang sesuai ---- pemetaan Unicode
6) Pemrosesan perantara, tidak ada perubahan pada database, langsung dimasukkan dalam bentuk Unicode
7) Tekan halaman kode untuk membaca database Unicode ---- halaman kode pemetaan kumpulan karakter yang ditentukan
8) Ini menunjukkan bahwa string yang dibaca dari kumpulan karakter yang ditentukan oleh Charset tidak berubah.
Mari kita ilustrasikan dengan contoh 1:
Contoh 2:
Pusing. Sekarang mari kita manfaatkan pengetahuan tersebut.
Kasus 1.
Kode yang berjalan dengan baik di bawah sistem Cina Sederhana akan kacau dalam database ketika ditempatkan di ruang asing, dan data asli juga kacau.
Analisis: Karena kebanyakan orang biasanya menggunakan sistem Mandarin Sederhana, halaman kode default=936, jadi tidak masalah jika semua orang tidak menulisnya.
Namun ketika kita pergi ke luar negeri, muncul masalah luar angkasa. Unicode dalam database telah diubah ke pengkodean bahasa Inggris, jadi setelah bahasa Cina Sederhana asli dalam database diubah ke bahasa Inggris, tampilan GB secara alami akan kacau.
Seperti yang ditunjukkan pada gambar, teks yang baru dimasukkan ditampilkan secara normal, tetapi Unicode Bahasa Inggris disimpan dalam database.
Solusi: Tambahkan <%@codepage=936%> ke semua.
Seluruh proses hanya melibatkan konversi antara bahasa Mandarin Sederhana dan Unicode yang sesuai.
Kasus 2:
Apa yang harus saya lakukan jika saya ingin mengonversi kode dan data Bahasa Mandarin Sederhana ke versi Bahasa Mandarin Tradisional yang lengkap?
Analisis: 1. Pengkodean semua file kode diubah menjadi Big5, dan file itu sendiri disimpan dalam bahasa Mandarin Tradisional.
2. <%@ halaman kode=936 %>
3.Charset=5 besar
4. Versi akses tidak menjadi masalah, karena data yang diakses adalah Unicode.
5. Oke, kodenya dapat dijalankan di bawah sistem Cina Tradisional murni.
6. Masalah yang tersisa: Akan ada beberapa tanda tanya saat membaca data asli bahasa Mandarin Sederhana. Efeknya sama dengan pembacaan 950 pada Contoh 1, tampilan big5. Karena Unicode bahasa Mandarin Sederhana diubah menjadi bahasa Mandarin Tradisional, beberapa karakter tidak dalam bahasa Mandarin Tradisional, sehingga tanda tanya akan muncul.
7. Solusi: Gunakan halaman asp sementara, codepage=65001, bacalah sebagai Unicode Cina Sederhana, gunakan fungsi Unicode->Big5 untuk mengubahnya menjadi Cina Tradisional, dan kemudian tulis kembali ke database.
Kedua kasus tersebut saya simpulkan sepenuhnya berdasarkan teori dan belum dapat dikonfirmasi.
Kritik dan koreksi dipersilakan jika Anda memiliki pengalaman serupa.