ホームページ >コンピューターのチュートリアル >コンピュータ知識 >Javaで文字列をGB2312エンコーディングに変換するにはどうすればよいですか?
パブリック void test333(){
文字列 a="青白";
###試す {###byte[] b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
//バイト配列を16進数の文字列に変換します
パブリック静的文字列 bytesToHexFun1(byte[] バイト) {
char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5',
'6'、'7'、'8'、'9'、'a'、'b'、'c'、'd'、'e'、'f'};
// バイトは 8 ビットで、2 つの 16 進数で識別できます。
char[] buf = 新しいchar[bytes.length * 2];int a = 0;
int インデックス = 0;
for(byte b : bytes) { // 除算と剰余を使用して変換します
if(b a = 256 b;
###} それ以外 {###
a = b;}
buf[インデックス] = HEX_CHAR[a / 16];
buf[インデックス] = HEX_CHAR[a % 16];
}
新しい文字列(buf)を返す;
}
中心となるアイデアは、まずこれを GB2312 のバイト配列に変換し、次に 16 進数に変換することです。
java 文字列バイト変換の問題
1. Web ページに中国語を出力します。
JAVAがネットワーク伝送で使用するエンコードは「ISO-8859-1」なので、出力時に次のように変換する必要があります。
文字列 str="中文";
ただし、プログラムのコンパイル時に使用されるエンコーディングが「GB2312」で、プログラムが中国のプラットフォームで実行される場合、この問題は発生しませんので、注意してください。
2. パラメータから中国語を読み取る
これは、次のような Web ページの出力とはまったく逆です。
str=新しい文字列(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");
中国の問題は存在しないでしょう。
java 文字列型変換
オンラインで見つけたので試してみます:
/**
* Unicode を文字列に変換します
* @param str
###* @戻る###
*/StringBuffer sb = new StringBuffer();
String[] arr = str.split("\\\\u");
int len = arr.length;
sb.append(arr[0]);
for(int i=1; i
char c = (char)Integer.parseInt(tmp.substring(0, 4), 16);
sb.append(c);
sb.append(tmp.substring(4));
}
return sb.toString();
###* @戻る###
###} それ以外 {###
以上がJavaで文字列をGB2312エンコーディングに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。