怎么样把一个汉字转成gb2312码? 就以 '袁' 字为例吧,我想知道详细点的说明,是怎么把'袁'字转成gbk码的,到底汉字和gbk之间是通过哪个算法算出来的,很不理解,一个是汉字,一个是一数数字。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像可以用ENCODINGE转一下再封装成一个新的字符串吧!! 没有算法,在 JRE 底层类库中各种字符集都有一个类,这些字符集类中映射了每个字符集中所有的字符。 这些类位于 sun.io.cs、sun.io.cs.ext 包中,属于 JRE 底层类库,源代码在 JDK 的 src 中没有,需要到Open JDK 上去下载 Open JDK 的源代码。GBK 编码的类为:sun.nio.cs.ext.GBK,这个类继承自 java.nio.charset.Charset 类所有的解码映射字符放在了其中的一个静态公开内部类中,这个类继承了 sun.nio.cs.ext.DoubleByteDecoder 类所有的编码映射字符放在了其中的一个静态公开内部类中,这个类继承了 sun.nio.cs.ext.DoubleByteEncoder 类解码工作由 DoubleByteDecoder 完成,编码工作由 DoubleByteEncoder 完成。DoubleByteDecoder 解码(由字节转为字符)主要方法: protected char decodeDouble(int byte1, int byte2) { if (((byte1 < 0) || (byte1 > index1.length)) || ((byte2 < start) || (byte2 > end))) return REPLACE_CHAR; int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start); return index2[index1[byte1] >> 4].charAt(n); }其中的 index1、index2 是由其子类 GBK 中的继承自 DoubleByteDecoder 静态公开内部类实现的。DoubleByteEncoder 编码(由字符转为字节)主要方法: protected int encodeDouble(char ch) { int offset = index1[((ch & 0xff00) >> 8 )] << 8; return index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff)); }同样,这其中的 index1、index2 也是由其子类 GBK 中的继承自 DoubleByteEncoder 静态公开内部类实现的。OpenJDK 6:http://download.java.net/openjdk/jdk6/ 下载 openjdk-6-src-b16-24_apr_2009.tar.gz,压缩包有 46.9MB,使用 WinRAR 等工具释放出来,可能需要一些时间,释放后大概有 254MB,那些个编码的源代码位于:jdk/src/share/classes/sun/nio/cs 目录中。 Java里有个API专干这事的啊,到命令行里转就OK java Line2D 问题。。。 这个sql语句怎么写哈? 熟悉JAVA或JSP市场的大哥请来~~~ windows中双击jar文件即可运行的执行方式怎么写? 我也散点分吧 getContentPane().问题 我在linux安装java,但是出错了 接口问题(初学) String.length()不能返回正确代码单元数量 用SQL语句 能否把表里的健值选出来? 一个数组的问题 在线急!!
Open JDK 上去下载 Open JDK 的源代码。GBK 编码的类为:sun.nio.cs.ext.GBK,这个类继承自 java.nio.charset.Charset 类所有的解码映射字符放在了其中的一个静态公开内部类中,这个类继承了 sun.nio.cs.ext.DoubleByteDecoder 类
所有的编码映射字符放在了其中的一个静态公开内部类中,这个类继承了 sun.nio.cs.ext.DoubleByteEncoder 类解码工作由 DoubleByteDecoder 完成,编码工作由 DoubleByteEncoder 完成。DoubleByteDecoder 解码(由字节转为字符)主要方法: protected char decodeDouble(int byte1, int byte2) {
if (((byte1 < 0) || (byte1 > index1.length))
|| ((byte2 < start) || (byte2 > end)))
return REPLACE_CHAR; int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
return index2[index1[byte1] >> 4].charAt(n);
}其中的 index1、index2 是由其子类 GBK 中的继承自 DoubleByteDecoder 静态公开内部类实现的。
DoubleByteEncoder 编码(由字符转为字节)主要方法: protected int encodeDouble(char ch) {
int offset = index1[((ch & 0xff00) >> 8 )] << 8;
return index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff));
}同样,这其中的 index1、index2 也是由其子类 GBK 中的继承自 DoubleByteEncoder 静态公开内部类实现的。OpenJDK 6:
http://download.java.net/openjdk/jdk6/ 下载 openjdk-6-src-b16-24_apr_2009.tar.gz,压缩包有 46.9MB,使用 WinRAR 等工具释放出来,可能需要一些时间,释放后大概有 254MB,那些个编码的源代码位于:jdk/src/share/classes/sun/nio/cs 目录中。