นี่คือโปรแกรมที่สามารถรับข้อความต้นฉบับที่ถูกต้องจากข้อความที่อ่านไม่ออกตามหลักการที่การเข้ารหัสที่ผิดมักจะนำไปสู่การเสริมบิตดังนั้นจำนวนไบต์ที่ใช้โดยข้อความที่ถูกต้องควรมีขนาดเล็กที่สุด (หนึ่ง)
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.hongyuan.test;
นำเข้า java.io.unsupportencodingexception;
-
* นี่คือโปรแกรมที่สามารถรับข้อความต้นฉบับที่ถูกต้องจากข้อความที่อ่านไม่ออกตามหลักการที่การเข้ารหัสที่ไม่ถูกต้องมักจะนำไปสู่การเสริมบิต
* ดังนั้นข้อความที่ถูกต้องควรใช้จำนวนขั้นต่ำของไบต์ (หนึ่ง)
-
* หากคุณไม่สามารถรับข้อความที่ถูกต้องเมื่อทดสอบโปรแกรมนี้เหตุผลที่เป็นไปได้มีดังนี้:
* 1. โปรแกรมนี้สามารถรับข้อความต้นฉบับจากข้อความที่เข้ารหัสข้อผิดพลาดได้เพียงครั้งเดียวและไม่สามารถกู้คืนข้อความจากข้อความที่เข้ารหัสข้อผิดพลาดหลายรายการได้
* 2. บางครั้งการเข้ารหัสผิดทำให้ตัวละครบางตัวกลายเป็นอักขระที่มองไม่เห็นและคุณอาจไม่คัดลอกข้อความที่อ่านไม่ออกทั้งหมดส่งผลให้บิตหายไป ในกรณีนี้ข้อความไม่สามารถกู้คืนได้
* 3. ข้อความต้นฉบับเป็นชุดอักขระที่ค่อนข้างใหญ่
* 4. ขอแสดงความยินดีกับการชนะรางวัล (นี่เป็นของหายาก)
-
* หมายเหตุ: ข้อความที่อ่านไม่ออกในโปรแกรมนั้นได้มาจากการปรับหน้าแรกของ Baidu (UTF-8) เป็น GBK (อ่านได้อย่างชัดเจน) หากคุณมีคำถามใด ๆ โปรดตอบกลับ
-
ชั้นเรียนสาธารณะ charsettest {
สตริงสุดท้ายคงที่สาธารณะ [] charset_names = สตริงใหม่ [] {"iso8859-1", "gbk", "utf-8"};
โมฆะคงที่สาธารณะหลัก (String [] args) โยน unsupportencodingexception {
// garbose string
string str = "中文版文版文版文版";
int strlength = integer.max_value; // ความยาวอักขระ
String Newstr = ""; // ยืนวิเคราะห์จากสตริงที่อ่านไม่ออก
String srcCharset = ""; // การเข้ารหัสสตริงที่อ่านไม่ออก
String TargetCharSet = ""; // การเข้ารหัสที่ถูกต้องของสตริงที่อ่านไม่ออก
// เดินทางผ่านชุดค่าผสมที่เป็นไปได้เพื่อสร้างรูปแบบการเข้ารหัสด้วยความยาวการเข้ารหัสที่เล็กที่สุด
สำหรับ (int i = 0; i <charset_names.length; i ++) {
สำหรับ (int j = 0; j <charset_names.length; j ++) {
String temp = สตริงใหม่ (str.getBytes (charset_names [i]), charset_names [j]);
//system.out.println(temp);
if (temp.length () <= strlength) {
strlength = temp.length ();
Newstr = temp;
srccharset = charset_names [i];
targetCharset = charset_names [j];
-
-
-
// เอาต์พุตรหัสสอบถามและแก้ไขรูปแบบข้อความ
System.out.println (srccharset+"->"+targetsCharset+":"+NewsTR);
-
-