Setiap daerah di dunia mempunyai bahasa daerahnya masing-masing. Perbedaan wilayah secara langsung menimbulkan perbedaan lingkungan bahasa. Dalam proses pengembangan program internasional, penting untuk menangani masalah bahasa.
Ini adalah masalah yang terjadi di seluruh dunia, sehingga Java memberikan solusi global. Metode yang dijelaskan dalam artikel ini adalah untuk memproses bahasa Mandarin, tetapi secara lebih luas, metode ini juga berlaku untuk memproses bahasa dari negara dan wilayah lain di dunia.
Karakter Cina berukuran double-byte. Yang disebut byte ganda berarti bahwa kata ganda menempati dua posisi BYTE (yaitu 16 bit), yang masing-masing disebut bit tinggi dan bit rendah. Pengkodean karakter bahasa Mandarin yang ditentukan di Tiongkok adalah GB2312, yang bersifat wajib. Saat ini, hampir semua aplikasi yang dapat memproses bahasa Mandarin mendukung GB2312. GB2312 mencakup karakter Cina tingkat pertama dan kedua serta 9 simbol area. Bit tinggi berkisar dari 0xa1 hingga 0xfe, dan bit rendah juga berkisar dari 0xa1 hingga 0xfe.
Ada pengkodean lain yang disebut GBK, tapi ini spesifikasi, tidak wajib. GBK menyediakan 20902 karakter Cina, yang kompatibel dengan GB2312, dan rentang pengkodean adalah 0x8140 hingga 0xfefe. Seluruh karakter di GBK dapat dipetakan ke Unicode 2.0 satu per satu.
Dalam waktu dekat, Tiongkok akan mengumumkan standar lain: GB18030-2000 (GBK2K). Ini mencakup font Tibet, Mongolia dan etnis minoritas lainnya, yang secara mendasar memecahkan masalah kurangnya posisi karakter. Catatan: Panjangnya tidak lagi tetap. Bagian dua byte kompatibel dengan GBK, dan bagian empat byte adalah karakter dan mesin terbang yang diperluas. Byte pertama dan ketiga berkisar dari 0x81 hingga 0xfe, dan byte kedua dan keempat berkisar dari 0x30 hingga 0x39.
Artikel ini tidak bermaksud untuk memperkenalkan Unicode. Mereka yang tertarik dapat menelusuri "http://www.unicode.org/" untuk melihat informasi lebih lanjut. Unicode memiliki ciri khas: mencakup semua karakter mesin terbang di dunia. Oleh karena itu, bahasa di berbagai wilayah dapat menjalin hubungan pemetaan dengan Unicode, dan Java memanfaatkannya untuk mencapai konversi antar bahasa yang heterogen.
Di JDK, pengkodean yang terkait dengan bahasa Mandarin adalah:
Tabel 1 Daftar pengkodean yang terkait dengan bahasa Mandarin di JDK
Deskripsi | nama pengkodean |
ASCII | 7-bit, sama seperti ascii7 |
ISO8859-1 | 8-bit, sama seperti 8859_1, ISO-8859-1, ISO_8859-1, latin1... dll. |
GB2312-80 | 16-bit, sama seperti gb2312, gb2312 |
Cp1381 | , |
1383 | , |
Cp1383 | , |
ISO2022CN,ISO2022CN_GB...dll sama | |
sama seperti cp1392 dan 1392. Saat ini, hanya sedikit JDK yang didukung |
dalam praktiknya. Saat pemrograman, yang lebih sering saya hubungi adalah GB2312 (GBK) dan ISO8859-1.
Mengapa ada tanda "?"?
Seperti disebutkan di atas, konversi antar bahasa dilakukan melalui Unicode. Misalkan ada dua bahasa A dan B yang berbeda. Langkah konversinya adalah: pertama konversi A ke Unicode, lalu konversi Unicode ke B.
Berikan contoh. Ada karakter Cina "李" di GB2312, dan kodenya adalah "C0EE", yang perlu diubah menjadi kode ISO8859-1. Langkah-langkahnya adalah: pertama ubah karakter "李" menjadi Unicode menjadi "674E", lalu ubah "674E" menjadi karakter ISO8859-1. Tentu saja pemetaan ini tidak akan berhasil, karena tidak ada karakter yang sesuai dengan "674E" di ISO8859-1.
Masalah terjadi ketika pemetaan tidak berhasil! Saat mengkonversi dari bahasa tertentu ke Unicode, jika karakter tidak ada dalam bahasa tertentu, hasilnya adalah kode Unicode "uffffd" ("u" berarti pengkodean Unicode,). Saat mengonversi dari Unicode ke bahasa tertentu, jika bahasa tertentu tidak memiliki karakter yang sesuai, Anda akan mendapatkan "0x3f" ("?"). Dari sinilah asal kata "?"
Misal: lakukan operasi String(buf, "gb2312") baru pada karakter stream buf = "0x80 0x40 0xb0 0xa1", hasilnya adalah "ufffdu554a", lalu dicetak, hasilnya adalah " ?ah", Karena "0x80 0x40" adalah karakter di GBK, bukan di GB2312.
Untuk contoh lain, lakukan operasi String baru (buf.getBytes("GBK")) pada string String="u00d6u00ecu00e9u0046u00bu00f9", dan hasilnya adalah "3fa8aca8a6463fa8b4", di antaranya, "u00d6 "Tidak ada karakter yang sesuai di "GBK", jadi kita mendapatkan "3f", "u00ec" sesuai dengan "a8ac", "u00e9" sesuai dengan "a8a6", dan "0046" sesuai dengan "46" (karena ini adalah karakter ASCII ), "u00b" tidak ditemukan, dan "3f" diperoleh. Akhirnya, "u00f9" sesuai dengan "a8b4". Cetak string ini dan hasilnya adalah "?ìéF?ù". Apakah kamu melihatnya? Tidak semuanya tanda tanya di sini, karena konten yang dipetakan antara GBK dan Unicode menyertakan karakter selain karakter Cina. Contoh ini adalah bukti terbaik.
Oleh karena itu, saat melakukan transcoding karakter Cina, jika terjadi kebingungan, Anda belum tentu mendapatkan tanda tanya! Bagaimanapun, kesalahan tetaplah kesalahan. Tidak ada perbedaan kualitatif antara 50 langkah dan 100 langkah.
Atau Anda mungkin bertanya: Apa hasilnya jika disertakan dalam kumpulan karakter sumber tetapi tidak di Unicode? Jawabannya adalah saya tidak tahu. Karena saya tidak memiliki karakter sumber untuk melakukan tes ini. Namun satu hal yang pasti, yaitu kumpulan karakter sumber belum cukup terstandarisasi. Di Java, jika ini terjadi, pengecualian akan diberikan.
Apa itu UTF
UTF adalah singkatan dari Unicode Text Format yang artinya format teks Unicode. Untuk UTF, didefinisikan sebagai berikut:
(1) Jika 9 bit pertama dari karakter Unicode 16-bit adalah 0, maka diwakili oleh satu byte sama dengan karakter aslinya. 7 digit terakhir sama, seperti "u0034" (0000 0000 0011 0100), diwakili oleh "34" (0011 0100)
; 2) Jika 5 karakter 16-bit Unicode pertama Jika bitnya 0, maka diwakili oleh 2 byte. Byte pertama dimulai dengan "110", dan 5 bit berikutnya sama dengan 5 bit tertinggi dari sumbernya. karakter setelah mengecualikan 5 angka nol pertama; byte kedua dimulai dengan "10" Pada awalnya, 6 bit berikutnya sama dengan 6 bit terbawah pada karakter sumber. Misalnya, "u025d" (0000 0010 0101 1101) akan diubah menjadi "c99d" (1100 1001 1001 1101);
(3) Jika tidak memenuhi dua aturan di atas, maka akan diwakili oleh tiga byte. Byte pertama dimulai dengan "1110", dan empat bit terakhir adalah empat bit teratas dari karakter sumber; byte kedua dimulai dengan "10", dan enam bit terakhir adalah enam bit tengah dari karakter sumber; byte dimulai dengan "10". Dimulai dengan "10", enam digit terakhir adalah enam digit terbawah dari karakter sumber; misalnya, "u9da7" (1001 1101 1010 0111) diubah menjadi "e9b6a7" (1110 1001 1011). 0110 1010 0111);
perbedaan antara Unicode dan Unicode pada program JAVA dapat digambarkan seperti ini. Hubungan antara UTF tidak mutlak: ketika sebuah string dijalankan di memori, ia muncul sebagai kode Unicode, dan ketika disimpan ke file atau media lain, UTF digunakan. Proses konversi ini diselesaikan dengan writeUTF dan readUTF.
Oke pembahasan dasarnya hampir selesai, langsung saja ke intinya.
Pertama-tama anggaplah masalahnya sebagai kotak hitam. Pertama-tama mari kita lihat representasi kotak hitam tingkat pertama:
input(charsetA)->process(Unicode)->output(charsetB)
sederhana. Konten yang sama perlu dikonversi dari charsetA ke unicode dan kemudian ke charsetB.
Mari kita lihat representasi sekunder:
SourceFile(jsp,java)->class->output.
Pada gambar ini, terlihat bahwa inputnya adalah file sumber jsp dan java dan kemudian keluaran. Kemudian perbaiki ke level ketiga:
jsp->temp file->class->browser,os console,db
app,servlet->class->browser,os console,db
. File Jsp pertama-tama menghasilkan file Java perantara, dan kemudian menghasilkan Kelas. Servlet dan aplikasi biasa dikompilasi langsung untuk menghasilkan Kelas. Kemudian, keluaran dari Kelas ke browser, konsol atau database, dll.
JSP: Proses dari file sumber ke Kelas
File sumber Jsp adalah file teks yang diakhiri dengan ".jsp". Di bagian ini, proses interpretasi dan kompilasi file JSP akan dijelaskan, dan perubahan berbahasa Mandarin akan dilacak.
1. Alat konversi JSP (jspc) yang disediakan oleh mesin JSP/Servlet mencari rangkaian karakter yang ditentukan dalam <%@ page contentType ="text/html; charset=<Jsp-charset>"%> di file JSP. Jika <Jsp-charset> tidak ditentukan dalam file JSP, pengaturan default file.encoding di JVM digunakan. Dalam keadaan normal, nilai ini adalah ISO8859-1
; -charset> " perintah menafsirkan semua karakter yang muncul di file JSP, termasuk karakter Cina dan karakter ASCII, dan kemudian mengubah karakter ini menjadi karakter Unicode, kemudian mengubahnya menjadi format UTF, dan menyimpannya sebagai file JAVA. Saat mengonversi karakter ASCII menjadi karakter Unicode, Anda cukup menambahkan "00" di depan, seperti "A", yang diubah menjadi "u0041" (tidak diperlukan alasan, beginilah cara tabel kode Unicode dikompilasi). Kemudian, setelah konversi ke UTF, berubah kembali menjadi "41"! Inilah sebabnya mengapa Anda dapat menggunakan editor teks biasa untuk melihat file JAVA yang dihasilkan oleh JSP;
3. Mesin menggunakan perintah yang setara dengan "javac -encoding UNICODE" untuk mengkompilasi file JAVA ke dalam file CLASS
; situasi konversi proses ini. Ada kode sumber berikut:
<%@ page contentType="text/html; charset=gb2312"%>
<html><tubuh>
<%
String a="Cina";
keluar.println(a);
%>
</body></html>
Kode ini ditulis pada UltraEdit untuk Windows. Setelah disimpan, pengkodean heksadesimal dari dua karakter "Cina" adalah "D6 D0 CE C4" (pengkodean GB2312). Setelah mencari tabel, pengkodean Unicode untuk kata "China" adalah "u4E2Du6587", yang dalam UTF adalah "E4 B8 AD E6 96 87". Buka file JAVA yang dikonversi dari file JSP yang dihasilkan oleh mesin, dan temukan bahwa kata "China" memang telah diganti dengan "E4 B8 AD E6 96 87". Kemudian periksa file CLASS yang dihasilkan oleh kompilasi file JAVA, dan temukan yang hasilnya sama persis dengan yang ada di file JAVA.
Mari kita lihat situasi di mana CharSet yang ditentukan di JSP adalah ISO-8859-1.
<%@ halaman contentType="teks/html; charset=ISO-8859-1"%>
<html><tubuh>
<%
String a="Cina";
keluar.println(a);
%>
</body></html>
Demikian pula, file ini ditulis dengan UltraEdit, dan dua karakter "Cina" juga disimpan sebagai pengkodean GB2312 "D6 D0 CE C4". Pertama simulasikan proses pembuatan file JAVA dan file CLASS: jspc menggunakan ISO-8859-1 untuk menafsirkan "Cina" dan memetakannya ke Unicode. Karena ISO-8859-1 adalah 8-bit dan merupakan bahasa Latin, aturan pemetaannya adalah menambahkan "00" sebelum setiap byte, sehingga pengkodean Unicode yang dipetakan harus "u00D6u00D0u00CEu00C4" , setelah konversi ke UTF seharusnya "C3 96 C3 90 C3 8E C3 84". Oke, buka file dan lihat. Di file JAVA dan file CLASS, "Chinese" memang dinyatakan sebagai "C3 96 C3 90 C3 8E C3 84".
Jika <Jsp-charset> tidak ditentukan dalam kode di atas, yaitu baris pertama ditulis sebagai "<%@ page contentType="text/html" %>", JSPC akan menggunakan pengaturan file.encoding untuk menafsirkan berkas JSP. Pada RedHat 6.2, hasil pemrosesan sama persis dengan spesifikasi ISO-8859-1.
Sejauh ini telah dijelaskan proses pemetaan karakter Cina pada proses konversi dari file JSP ke file CLASS. Singkatnya: Dari "JspCharSet ke Unicode ke UTF". Tabel berikut merangkum proses ini:
Tabel 2 Proses konversi "Cina" dari JSP ke CLASS
Jsp-CharSet | Dalam file JSP Dalam | fileJAVA | Dalam file CLASS |
GB2312 | D6 D0 CE C4 (GB2312) | dari u4E2Du6587 (Unicode) hingga E4 B8 AD E6 96 87 (UTF) | E4 B8 AD E6 96 87 (UTF) |
ISO-8859 -1 | D6 D0 CE C4 (GB2312) | dari u00D6u00D0u00CEu00C4 (Unicode) hingga C3 96 C3 90 C3 8E C3 84 (UTF) | C3 96 C3 90 C3 8E C3 84 (UTF) |
Tidak ada (default = file.encoding) | Sama seperti ISO- 8859 -1 | Sama seperti ISO-8859-1 | Sama seperti ISO-8859-1 |
Servlet: Proses dari file sumber ke Kelas.
File sumber Servlet adalah file teks yang diakhiri dengan ".java". Bagian ini akan membahas proses kompilasi Servlet dan melacak perubahan dalam bahasa Mandarin.
Gunakan "javac" untuk mengkompilasi file sumber Servlet. javac dapat mengambil parameter "-encoding <Compile-charset>", yang berarti "gunakan pengkodean yang ditentukan dalam <Compile-charset> untuk menafsirkan file sumber Serlvet."
Saat file sumber dikompilasi, gunakan <Compile-charset> untuk menafsirkan semua karakter, termasuk karakter China dan karakter ASCII. Kemudian ubah konstanta karakter menjadi karakter Unicode, dan terakhir, ubah Unicode menjadi UTF.
Di Servlet, ada tempat lain untuk mengatur CharSet dari aliran keluaran. Biasanya sebelum mengeluarkan hasilnya, metode setContentType dari HttpServletResponse dipanggil untuk mencapai efek yang sama seperti pengaturan <Jsp-charset> di JSP, yang disebut <Servlet-charset>.
Perhatikan bahwa total tiga variabel disebutkan dalam artikel: <Jsp-charset>, <Compile-charset> dan <Servlet-charset>. Diantaranya, file JSP hanya terkait dengan <Jsp-charset>, sedangkan <Compile-charset> dan <Servlet-charset> hanya terkait dengan Servlet.
Lihatlah contoh berikut:
import javax.servlet.*;
import
javax.servlet.http.*;
{
public void doGet(permintaan HttpServletRequest, tanggapan HttpServletResponse)
melempar ServletException,java.io.IOException
{
resp.setContentType("teks/html; charset=GB2312");
java.io.PrintWriter keluar=resp.getWriter();
keluar.println("<html>");
out.println("#中文#");
keluar.println("</html>");
}
}
File ini juga ditulis dengan UltraEdit untuk Windows, dan dua karakter "Cina" disimpan sebagai "D6 D0 CE C4" (pengkodean GB2312).
Mulai kompilasi. Tabel berikut menunjukkan kode heksadesimal dari kata "China" di file CLASS ketika <Compile-charset> berbeda. Selama kompilasi, <Servlet-charset> tidak berpengaruh. <Servlet-charset> hanya mempengaruhi output dari file CLASS. Faktanya, <Servlet-charset> dan <Compile-charset> bekerja sama untuk mencapai efek yang sama seperti <Jsp-charset> di file JSP, karena <Jsp- charset >Ini akan berdampak pada kompilasi dan keluaran file CLASS.
Tabel 3 Proses transformasi "Cina" dari file sumber Servlet ke Kelas
Compile-charset | Kode Unicode yang setara | dalam file Kelas | di file sumber Servlet | adalah
GB2312 | D6 D0 CE C4 (GB2312) | E4 B8 AD E6 96 87 (UTF) | u4E2Du6587 (dalam Unicode = "Cina") |
ISO-8859-1 | D6 D0 CE C4 (GB2312) | C3 96 C3 90 C3 8E C3 84 (UTF) | u00D6 u00D0 u00CE u00C4 (A 00 ditambahkan di depan D6 D0 CE C4) |
Tidak ada (default) | D6 D0 CE C4 (GB2312) | Sama seperti ISO- 8859 -1 | Sama seperti ISO-8859-1 |
No. | Langkah Deskripsi | Hasil | |
1 | Tulis file sumber JSP dan simpan sebagai format GB2312 | D6 D0 CE C4 (D6D0=中文 CEC4=文) | |
2 | jspc mengubah file sumber JSP menjadi file JAVA sementara, memetakan string ke Unicode sesuai dengan GB2312, dan menulisnya ke dalam file JAVA dalam format UTF | E4 B8 AD E6 96 87 | |
3 | Kompilasi sementara File JAVA menjadi file CLASS | E4 B8 AD E6 96 87 | |
4 | Saat dijalankan, baca dulu string dari file CLASS menggunakan readUTF. Pengkodean Unicode di memori adalah | 4E 2D 65 87 (dalam Unicode 4E2D=中文6587=文 | |
) | 5Menurut | Jsp -charset=GB2312 Konversi Unicode ke aliran byte | D6 D0 CE C4 |
6 | Keluarkan aliran byte ke IE, dan atur pengkodean IE ke GB2312 (Catatan Penulis: Informasi ini disembunyikan di header HTTP) | D6 D0 CE C4 | |
7 | Tampilan IE hasil "Cina" dengan | "Cina Sederhana" (tampilan benar) |
No. | Langkah Deskripsi | Hasil | |
1 | Tulis file sumber JSP dan simpan sebagai format GB2312 | D6 D0 CE C4 (D6D0=中文 CEC4=文) | |
2 | jspc mengonversi file sumber JSP menjadi file JAVA sementara, memetakan string ke Unicode sesuai dengan ISO8859-1, dan menulisnya ke dalam file JAVA dalam format UTF | C3 96 C3 90 C3 8E C3 | |
84 | 3 | File JAVA sementara dikompilasi menjadi file CLASS | C3 96 C3 90 C3 8E C3 84 |
4. | Saat dijalankan, baca dulu string dari file CLASS menggunakan readUTF. Pengkodean Unicode di memori adalah | 00 D6 00 D0 00 CE 00 C4 (Tidak ada!!!) | |
5 | Ubah Unicode menjadi aliran byte | D6 D0 CE C4 | sesuai dengan Jsp-charset=ISO8859-1|
6 | Keluarkan aliran byte ke IE, dan atur pengkodean IE ke ISO8859-1 (penekanan penulis : Informasi ini adalah tersembunyi di header HTTP) | D6 D0 CE C4 | |
7 | IE | ||
menggunakan | "karakter Eropa Barat" untuk melihat hasilnya | sebagai karakter kacau. Ini sebenarnya empat karakter ASCII, tetapi karena lebih besar dari 128, tampilannya aneh | |
dari IE ke "China Sederhana" "中文" | "中文" (tampilan yang benar) |
No. | Langkah Deskripsi | Hasil | |
1 | Tulis file sumber JSP dan simpan sebagai format GB2312 | D6 D0 CE C4 (D6D0=中文 CEC4=文) | |
2 | jspc mengonversi file sumber JSP menjadi file JAVA sementara, memetakan string ke Unicode sesuai dengan ISO8859-1, dan menulisnya ke dalam file JAVA dalam format UTF | C3 96 C3 90 C3 8E C3 | |
84 | 3 | File JAVA sementara dikompilasi menjadi file CLASS | C3 96 C3 90 C3 8E C3 84 |
4. | Saat dijalankan, baca dulu string dari file CLASS menggunakan readUTF. Pengkodean Unicode di memori adalah | 00 D6 00 D0 00 CE 00 C4 | |
5. | Menurut Jsp- charset=ISO8859-1 Ubah Unicode menjadi aliran byte | D6 D0 CE C4 | |
6 | Keluarkan aliran byte ke IE | D6 D0 CE C4 | |
7 | IE menggunakan pengkodean halaman saat permintaan dibuat untuk melihat hasilnya, | tergantung pada situasinya. Jika ini adalah bahasa Mandarin Sederhana, maka dapat ditampilkan dengan benar. Jika tidak, langkah 8 pada Tabel 5 perlu dilakukan. |
No. | Langkah Deskripsi | Hasil |
1 | Tulis file sumber Servlet dan simpan dalam format GB2312 | D6 D0 CE C4 (D6D0=Cina CEC4=Cina) |
2 | Gunakan javac –encoding GB2312 untuk mengkompilasi file sumber JAVA ke dalam file CLASS | E4 B8 AD E6 96 87 (UTF) |
3 | Saat menjalankan, baca dulu string dari file CLASS menggunakan readUTF, dan simpan itu di memori Pengkodeannya adalah Unicode | 4E 2D 65 87 (Unicode) |
4 | Ubah Unicode menjadi aliran byte | D6 D0 CE C4 (GB2312) | menurut Servlet-charset=GB2312
5 | Keluarkan aliran byte ke IE dan atur atribut pengkodean IE ke Servlet- charset=GB2312 | D6 D0 CE C4 (GB2312) |
6 | IE menggunakan "Cina Sederhana" untuk melihat hasil | "Cina" (ditampilkan dengan benar) |
No. | Langkah Deskripsi | Hasil |
1 | Tulis file sumber Servlet dan simpan dalam format GB2312 | D6 D0 CE C4 (D6D0=中文 CEC4=文) |
2 | Gunakan javac –encoding ISO8859-1 untuk mengkompilasi file sumber JAVA ke dalam file CLASS | C3 96 C3 90 C3 8E C3 84 (UTF) |
3 | Saat menjalankan, baca dulu string dari file CLASS menggunakan readUTF , pengkodean Unicode dalam memori adalah | 00 D6 00 D0 00 CE 00 C4 |
4 | Ubah Unicode menjadi aliran byte sesuai dengan Servlet-charset=ISO8859-1 | D6 D0 CE C4 |
5 | Keluarkan aliran byte ke IE dan atur pengkodean IE Atributnya adalah Servlet-charset=ISO8859-1 | D6 D0 CE C4 (GB2312) |
6 | IE menggunakan "karakter Eropa Barat" untuk melihat | hasil yang kacau (alasannya sama dengan Tabel 5) |
7 | Ubah pengkodean halaman IE menjadi "Cina Sederhana " | "Cina" (ditampilkan dengan benar) |
Deskripsi langkah | nomor seri | Bidang | hasil |
1 | Masukkan "Cina" di IE | D6 D0 CE C4 | IE |
2 | IE mengubah string menjadi UTF dan mengirimkannya ke aliran transport | E4 B8 AD E6 96 87 | |
3 | Servlet menerima aliran input dan membacanya dengan readUTF | 4E 2D 65 87 (unicode) | Servlet |
4 | Di Servlet, pemrogram harus mengembalikan string ke aliran byte | D6 D0 CE C4 | menurut GB2312.|
5 | Pemrogram menghasilkan string baru | 00 D6 00 D0 00 CE | sesuai dengan kode internal database ISO8859 -1.00C4 |
6 | Kirim string yang baru dibuat ke JDBC | 00 D6 00 D0 00 CE 00 C4 | |
7 | JDBC mendeteksi bahwa kode internal database adalah ISO8859-1 | 00 D6 00 D0 00 CE 00 C4 | JDBC |
8 | JDBC mengonversi string yang diterima menurut ISO8859 -1 Hasilkan aliran byte | D6 D0 CE C4 | |
9 | JDBC menulis aliran byte ke dalam database | D6 D0 CE C4 | |
10 | Selesaikan pekerjaan penyimpanan data | D6 D0 CE C4 Database | |
Berikut ini adalah proses pengambilan nomor dari database | |||
11 | JDBC mengambil kata-kata dari database Throttle | D6 D0 CE C4 | JDBC |
12 | JDBC menghasilkan string sesuai dengan kumpulan karakter database ISO8859-1 dan mengirimkannya ke Servlet | 00 D6 00 D0 00 CE 00 C4 (Unicode) | |
13 | Servlet memperoleh string | 00 D6 00 D0 00 CE 00 C4 (Unicode) | Servlet |
14 | Pemrogram harus mengembalikan aliran byte asli | D6 D0 CE C4 | sesuai dengan kode internal ISO8859-1 database.|
15 | Pemrogram harus membuat string baru sesuai dengan rangkaian karakter klien GB2312 | 4E 2D 65 87 (Unikode) | |
Servlet bersiap untuk mengeluarkan string ke klien | |||
16. | Servlet menghasilkan aliran byte | D6D0 CE C4 | Servlet |
17 | berdasarkan <Servlet-charset>. Servlet mengeluarkan aliran byte ke IE. Jika <Servlet-charset> telah ditentukan, Aliran byte IE juga akan diatur. Pengkodeannya adalah <Servlet-charset> | D6 D0 CE C4 | |
18 | IE Lihat hasilnya"Cina" (ditampilkan dengan benar) | sesuai dengan pengkodean yang ditentukan atau pengkodean default | IE |