admin 管理员组

文章数量: 1086019


2024年1月24日发(作者:数据结构排序算法实验报告)

java里是否可以将ASCII码直接转换成GBK,UTF-8,UTF-16

2009-03-29 11:39:10| 分类: 编程技术 | 标签: |字号大中小 订阅

public class ChangeCharset {

/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */

public static final String US_ASCII = "US-ASCII";

/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */

public static final String ISO_8859_1 = "ISO-8859-1";

/** 8 位 UCS 转换格式 */

public static final String UTF_8 = "UTF-8";

/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */

public static final String UTF_16BE = "UTF-16BE";

/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */

public static final String UTF_16LE = "UTF-16LE";

/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */

public static final String UTF_16 = "UTF-16";

/** 中文超大字符集 */

public static final String GBK = "GBK";

/**

* 将字符编码转换成US-ASCII码

*/

public String toASCII(String str) throws UnsupportedEncodingException {

return Charset(str, US_ASCII);

}

/**

* 将字符编码转换成ISO-8859-1码

*/

public String toISO_8859_1(String str) throws UnsupportedEncodingException {

return Charset(str, ISO_8859_1);

}

/**

* 将字符编码转换成UTF-8码

*/

public String toUTF_8(String str) throws UnsupportedEncodingException {

return Charset(str, UTF_8);

}

/**

* 将字符编码转换成UTF-16BE码

*/

public String toUTF_16BE(String str) throws UnsupportedEncodingException {

return Charset(str, UTF_16BE);

}

/**

* 将字符编码转换成UTF-16LE码

*/

public String toUTF_16LE(String str) throws UnsupportedEncodingException {

return Charset(str, UTF_16LE);

}

/**

* 将字符编码转换成UTF-16码

*/

public String toUTF_16(String str) throws UnsupportedEncodingException {

return Charset(str, UTF_16);

}

/**

* 将字符编码转换成GBK码

*/

public String toGBK(String str) throws UnsupportedEncodingException {

return Charset(str, GBK);

}

/**

* 字符串编码转换的实现方法

*

* @param str

* 待转换编码的字符串

* @param newCharset

* 目标编码

* @return

* @throws UnsupportedEncodingException

*/

public String changeCharset(String str,

UnsupportedEncodingException {

if (str != null) {

// 用默认字符编码解码字符串。

byte[] bs = es();

printByteArray(bs);

("n");

// 用新的字符编码生成字符串

return new String(bs, newCharset);

}

return null;

}

/**

* 字符串编码转换的实现方法

*

* @param str

* 待转换编码的字符串

* @param oldCharset

* 原编码

* @param newCharset

String newCharset) throws

* 目标编码

* @return

* @throws UnsupportedEncodingException

*/

public String changeCharset(String str, String oldCharset, String newCharset)

throws UnsupportedEncodingException {

if (str != null) {

// 用旧的字符编码解码字符串。解码可能会出现异常。

byte[] bs = es(oldCharset);

printByteArray(bs);

n("");

// 用新的字符编码生成字符串

return new String(bs, newCharset);

}

return null;

}

public static void main(String[] args) throws UnsupportedEncodingException {

ChangeCharset test = new ChangeCharset();

String str = "This is a 中文的 String!";

n("str: " + str);

String gbk = (str);

n("转换成GBK码: " + gbk);

n();

String ascii = I(str);

n("转换成US-ASCII码: " + ascii);

gbk =

);

Charset(ascii, _ASCII,

n("再把ASCII码的字符串转换成GBK码: " + gbk);

n();

String iso88591 = _8859_1(str);

n("转换成ISO-8859-1码: " + iso88591);

gbk =

);

Charset(iso88591, _8859_1,

n("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);

n();

String utf8 = _8(str);

n("转换成UTF-8码: " + utf8);

gbk = Charset(utf8, _8, );

n("再把UTF-8码的字符串转换成GBK码: " + gbk);

n();

String utf16be = _16BE(str);

n("转换成UTF-16BE码:" + utf16be);

gbk =

);

Charset(utf16be, _16BE,

n("再把UTF-16BE码的字符串转换成GBK码: " + gbk);

n();

String utf16le = _16LE(str);

n("转换成UTF-16LE码:" + utf16le);

gbk =

);

Charset(utf16le, _16LE,

n("再把UTF-16LE码的字符串转换成GBK码: " + gbk);

n();

String utf16 = _16(str);

n("转换成UTF-16码:" + utf16);

gbk =

);

Charset(utf16, _16LE,

n("再把UTF-16码的字符串转换成GBK码: " + gbk);

String s = new String("中文".getBytes("UTF-8"), "UTF-8");

n(s);

}

void printByteArray(byte[] bs){

for(int i = 0,sz = ;i

(tring((int)bs[i])+"t");

}

}


本文标签: 编码 字节 字符串 字符 顺序