Javaで文字列をGB2312エンコーディングに変換するにはどうすればよいですか?

王林
リリース: 2024-01-20 08:42:13
転載
566 人が閲覧しました

Javaで文字列をGB2312エンコーディングに変換するにはどうすればよいですか?

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="中文";

str=新しい文字列(str.getBytes("GB2312"),"8859_1");

ただし、プログラムのコンパイル時に使用されるエンコーディングが「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

###* @戻る###

*/

パブリック静的文字列 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 文字列 tmp = arr[i];

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

sb.append(c);

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

}

return sb.toString();

}

/**

# 文字列を Unicode に変換します

* @param str

###* @戻る###

*/

パブリック静的文字列 str2Unicode(文字列 str) {

StringBuffer sb = new 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("222dstestaa"));

文字列 str = "\u6d4b1\u8bd5aa"";

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

}

以上がJavaで文字列をGB2312エンコーディングに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:docexcel.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート