@테스트
공개 무효 test333(){
String a="青白";
시도해보세요 {
byte[] b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));
} catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
}
//바이트 배열을 16진수 문자열로 변환
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'};
// 바이트는 8비트이며 두 개의 16진수 숫자로 식별할 수 있습니다
char[] buf = 새로운 char[bytes.length * 2];
int a = 0;
int 인덱스 = 0;
for(byte b : bytes) { // 나눗셈과 나머지를 이용해 변환
if(b
a = 256 + b;
} 그 외 {
a = b;
}
buf[index++] = HEX_CHAR[a/16];
buf[index++] = HEX_CHAR[a % 16];
}
새 문자열(buf)을 반환합니다.
}
중심 아이디어는 먼저 GB2312 바이트 배열로 변환한 다음 16진수로 변환하는 것입니다.
1. 웹페이지에 중국어를 출력합니다.
네트워크 전송에서 JAVA가 사용하는 인코딩은 "ISO-8859-1"이므로 출력 시 다음과 같이 변환해야 합니다.
String str="중문\;
str=new String(str.getBytes("GB2312"),"8859_1");
그러나 프로그램 컴파일 시 사용한 인코딩이 "GB2312"이고 해당 프로그램이 중국 플랫폼에서 실행되는 경우에는 이런 문제가 발생하지 않으니 주의하시기 바랍니다.
2. 매개변수에서 중국어 읽기
이것은 웹페이지의 출력과 정확히 반대입니다.
str=new String(str.getBytes("8859_1"),"GB2312");
3.중국 이슈를 DB에서 관리하세요
더 간단한 방법은: "제어판"에서 "지역"을 "영어(미국)"로 설정하는 것입니다. 여전히 왜곡된 문자가 나타나면 다음 설정을 지정할 수도 있습니다.
중국어를 수강하는 경우: str=new String(str.getBytes("GB2312"));
DB에 중국어 입력: str=new String(str.getBytes("ISO-8859-1"));
4. JSP의 중국어 솔루션:
"제어판"에서 "지역"을 "영어(미국)"으로 설정하세요.
JSP 페이지에 추가:
그래도 정상적으로 표시되지 않을 경우 다음 변환을 수행해야 합니다.
예: name=new String(name.getBytes("ISO-8859-1"),"GBK");
중국어 문제는 없을 겁니다.
온라인에서 하나를 찾았으니 시도해 보세요.
/**
* 유니코드를 문자열로
* @param str
* @return
*/
public static String unicode2Str(String str) {
StringBuffer sb = 새로운 StringBuffer();
String[] arr = str.split("\\u");
int len = arr.length;
sb.append(arr[0]);
for(int i=1; i 문자열 tmp = arr[i]; char c = (char)Integer.parseInt(tmp.substring(0, 4), 16); sb.append(c); sb.append(tmp.substring(4)); } return sb.toString(); } /** * 문자열을 유니코드로 변환 * @param str * @return */ public static String str2Unicode(String str) { StringBuffer sb = 새로운 StringBuffer(); char[] charArr = str.toCharArray(); for (char ch : charArr) { if (ch > 128) { sb.append("\u" + Integer.toHexString(ch)); } 그 외 { sb.append(ch); } } return sb.toString(); } public static void main(String[] args) { System.out.println(str2Unicode("222dstest1testaa")); 문자열 str = "u6d4b1u8bd5aa"; System.out.println(unicode2Str(str)); }
위 내용은 Java에서 문자열을 GB2312 인코딩으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!