@Test
public void test333(){
String a="青白";
try {
byte[] b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
//Convert byte array into hexadecimal string
public static String bytesToHexFun1(byte[] bytes) {
char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
// A byte is 8 bits and can be identified by two hexadecimal digits
char[] buf = new char[bytes.length * 2];
int a = 0;
int index = 0;
for(byte b : bytes) { // Convert using division and remainder
if(b
a = 256 b;
} else {
a = b;
}
buf[index] = HEX_CHAR[a / 16];
buf[index] = HEX_CHAR[a % 16];
}
return new String(buf);
}
The central idea is to first convert it into a byte array of GB2312, and then convert it into hexadecimal.
1. Output Chinese in the web page.
The encoding used by JAVA in network transmission is "ISO-8859-1", so it needs to be converted when outputting, such as:
String str="中文";
str=new String(str.getBytes("GB2312"),"8859_1");
But if the encoding used when compiling the program is "GB2312" and the program is run on a Chinese platform, this problem will not occur, so be sure to pay attention.
2. Read Chinese from parameters
This is exactly the opposite of the output in the web page, such as:
str=new String(str.getBytes("8859_1"),"GB2312");
3. Chinese issues in operating DB
A simpler method is: in the "Control Panel", set the "Region" to "English (United States)". If garbled characters still appear, you can also make the following settings:
When taking Chinese: str=new String(str.getBytes("GB2312"));
Input Chinese into DB: str=new String(str.getBytes("ISO-8859-1"));
4. Chinese solution in jsp:
In the "Control Panel", set the "Region" to "English (United States)".
Add to JSP page:
If it still cannot be displayed normally, the following conversion must be performed:
For example: name=new String(name.getBytes("ISO-8859-1"),"GBK");
There will be no Chinese problem.
I found one online, try it:
/**
* Convert unicode to string
* @param str
* @return
*/
public static String unicode2Str(String str) {
StringBuffer sb = new StringBuffer();
String[] arr = str.split("\\\\u");
int len = arr.length;
sb.append(arr[0]);
for(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)); } return sb.toString(); } /** * Convert string to unicode * @param str * @return */ public static String str2Unicode(String str) { StringBuffer sb = new StringBuffer(); char[] charArr = str.toCharArray(); for (char ch : charArr) { if (ch > 128) { sb.append("\\u"" Integer.toHexString(ch)); } else { sb.append(ch); } } return sb.toString(); } public static void main(String[] args) { System.out.println(str2Unicode("222dstest1testaa")); String str = "\u6d4b1\u8bd5aa""; System.out.println(unicode2Str(str)); }
The above is the detailed content of How to convert string to GB2312 encoding in Java?. For more information, please follow other related articles on the PHP Chinese website!