uncode与中文相互转换的问题

03-02-14 xulei
问一下banq,

如何实现编码unicode --> GB2312的转换

例如

一个unicode字符:"&x6D4B;&x8BD5;" ---> "测试"

xulei
2003-02-14 17:34
" &x 6D4B;&x 8BD5;" ---> "测试"

呵呵,在x后面加个空格,unicode字符直接也显示成为汉字了~~

banq
2003-02-15 20:34
那你就研究一下jive的这个显示原理,它已经解决了你的问题

iceant
2003-02-15 21:22
你想要问什么?能详细说说吗?我不太看得懂你的问题。
BTW: 浏览器可以解析 &D4B,这和 Jive 没有关系

zenith
2003-02-16 01:06
new String(readString.getBytes("8859_1"),"gb2312");

可以参考以下文章:
http://www.wnetw.com/java/forums/read.asp?SubjectID=167&IsExcellent=False&FromPage=2&ViewPage=1

iceant
2003-02-16 23:50
我现在假设你是有一个 Unicode 编码的字串,想转换成 GB2312 编码的字节.

让我们先达成一个共识:

[1] JVM 内部是使用Unicode 来存取字串的。

[2] 字串 String 实际上是一个 char[]

\u6D4B\u8BD5 就是"测试"的Unicode编码.
存贮在 String 中时大致是这个样子:
char[0]=\u6D4B
char[1]=\u8BD5
要转成 GB2312 编码,只需要做以下方法调用:

String tmp = "\u6D4B\u8BD5";
byte[] b = tmp.getBytes("GB2312");//0xb2,0xe2,0xca,0xd4 - GB2312
<p class="indent">

这里进行了类似如下的调用:

CharToByteConverter converter = CharToByteConverter.getConverter("GB2312");
b = converter.convertAll(tmp.toCharArray());
<p class="indent">


如果将 b = {0xb2,0xe2,0xca,0xd4} 在支持GB2312编码的平台下调用系统显示方法,就会在终端上显示"测试"两个字。不信你可以在 UltraEdit 的HexEdit模式里输入以上字节,就可以看到正确结果


xulei
2003-02-17 10:03
呵呵,谢谢banq和各位兄弟的鼎立相助。

xulei
2003-02-17 11:02
还要麻烦banq,我下载了您的jive源码,不知道您的源码中是否有这个问题的解决方案?
我简单看了看,我新建论坛时,输入的是unicode字符,录入到数据库中的也是unicode字符,读出显示到web页面上的还是unicode字符,我想知道是否能够在页面上以中文的形式现实实际的中文内容,而不用unicode呢?

猜你喜欢