Rumah  >  Artikel  >  tutorial komputer  >  Bagaimana untuk menukar rentetan kepada pengekodan GB2312 di Java?

Bagaimana untuk menukar rentetan kepada pengekodan GB2312 di Java?

王林
王林ke hadapan
2024-01-20 08:42:13495semak imbas

Bagaimana untuk menukar rentetan kepada pengekodan GB2312 di Java?

Cara menukar rentetan kepada pengekodan asal GB2312 dalam Java

@Ujian

ujian kekosongan awam333(){

String a="青白";

cuba {

bait[] b=a.getBytes("GB2312");

System.out.println(bytesToHexFun1(b));

} tangkapan (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

//Tukar tatasusunan bait kepada rentetan perenambelasan

String statik awam baitToHexFun1(bait[] bait) {

char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5',

'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', ​​​​'f'};

// Satu bait ialah 8 bit dan boleh dikenal pasti dengan dua digit heksadesimal

char[] buf = aksara baharu[bytes.length * 2];

int a = 0;

int indeks = 0;

for(bait b : bait) { // Tukar menggunakan pembahagian dan baki

jika(b

a = 256 + b;

} lain {

a = b;

}

buf[index++] = HEX_CHAR[a/16];

buf[index++] = HEX_CHAR[a % 16];

}

kembalikan String(buf) baharu.

}

Idea utama ialah menukarnya terlebih dahulu menjadi tatasusunan GB2312 bait, dan kemudian menukarnya menjadi perenambelasan.

masalah penukaran java String Byte

1. Keluarkan bahasa Cina di halaman web.

Pengekodan yang digunakan oleh JAVA dalam penghantaran rangkaian ialah "ISO-8859-1", jadi ia perlu ditukar semasa mengeluarkan, seperti:

String str="中文";

str=new String(str.getBytes("GB2312"),"8859_1");

Tetapi jika pengekodan yang digunakan semasa menyusun atur cara adalah "GB2312" dan program dijalankan pada platform Cina, masalah ini tidak akan berlaku, jadi pastikan anda memberi perhatian.

2. Baca bahasa Cina daripada parameter

Ini betul-betul bertentangan dengan output pada halaman web:

str=new String(str.getBytes("8859_1"),"GB2312");

3 Uruskan isu Cina dalam DB

Kaedah yang lebih mudah ialah: dalam "Panel Kawalan", tetapkan "Wilayah" kepada "Bahasa Inggeris (Amerika Syarikat)". Jika aksara bercelaru masih muncul, anda juga boleh membuat tetapan berikut:

Apabila mendapat bahasa Cina: str=new String(str.getBytes("GB2312"));

Masukkan bahasa Cina ke dalam DB: str=new String(str.getBytes("ISO-8859-1"));

4 penyelesaian Cina dalam jsp:

Dalam "Panel Kawalan", tetapkan "Wilayah" kepada "Bahasa Inggeris (Amerika Syarikat)".

Tambah ke halaman JSP:

Jika masih tidak dapat dipaparkan seperti biasa, penukaran berikut mesti dilakukan:

Contohnya: name=new String(name.getBytes("ISO-8859-1"),"GBK");

Tiada masalah Cina.

Penukaran jenis rentetan java

Saya jumpa satu dalam talian, cubalah:

/**

* unicode ke rentetan

* @param str

* @kembali

*/

String statik awam unicode2Str(String str) {

StringBuffer sb = StringBuffer();

String[] arr = str.split("\\u");

int len ​​​​= arr.length;

sb.append(arr[0]);

untuk(int i=1; i

String tmp = arr[i];

char c = (char)Integer.parseInt(tmp.substring(0, 4), 16);

sb.append(c);

sb.append(tmp.substring(4));

}

kembali sb.toString();

}

/**

* Tukar rentetan kepada unicode

* @param str

* @kembali

*/

String statik awam str2Unicode(String str) {

StringBuffer sb = StringBuffer();

char[] charArr = str.toCharArray();

untuk (char ch : charArr) {

jika (ch > 128) {

sb.append("\u" + Integer.toHexString(ch));

} lain {

sb.append(ch);

}

}

kembali sb.toString();

}

utama kekosongan statik awam(String[] args) {

System.out.println(str2Unicode("222dstest1testaa"));

String str = "u6d4b1u8bd5aa";

System.out.println(unicode2Str(str));

}

Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan kepada pengekodan GB2312 di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:docexcel.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam