文选流氓 发表于 2003-5-11 22:43

1-1-16-2-14 请教一个jsp中文问题

发信人: gfcae (gfcae), 信区: Java
标题: Re: 请教一个jsp中文问题
发信站: BBS 水木清华站 (Fri Aug 23 22:18:52 2002), 站内信件

利用下面的方法转换:
-------------------------------------------

import java.io.*;

public class TransFormat{

    private static boolean orTrans = true;

    public static String unicodeToGB(String strIn){
      if (orTrans) {
            byte[] b;
            String strOut = null;
            if(strIn == null || (strIn.trim()).equals(""))
                return strIn;
            try{
                b = strIn.getBytes("GB2312");
                strOut = new String(b,"ISO-8859-1");
                } catch (UnsupportedEncodingException e){}
                return strOut;
      } else {
            return strIn;
      }
    }
    public static String GBToUnicode(String strIn){
      if (orTrans) {
            String strOut = null;
            if(strIn == null || (strIn.trim()).equals("")) {
                return strIn;
            }
            try {
                byte[] b = strIn.getBytes("ISO-8859-1");
                strOut = new String(b,"GB2312");
                } catch (Exception e) {}
                return strOut;
      } else {
            return strIn;
      }
    }
}

------------------------------------------------------------------
【 在 junire (我学JAVA的) 的大作中提到: 】
: 我按照书里面讲的在开头加入了charset="gb2312"
: 可以在网页正常显示中文可是如果一写入sql数据库
: 就变成????应该是乱码?
: 请问高手如何解决这个问题,不胜感激。。。


--
Gfcae <gfcae@163.com>


※ 修改:·gfcae 於 Aug 23 22:20:40 修改本文·
※ 来源:·BBS 水木清华站 smth.edu.cn·

文选流氓 发表于 2003-5-11 22:44

发信人: tiara (编程、编程、我要编程), 信区: Java
标题: Re: 请教一个jsp中文问题
发信站: BBS 水木清华站 (Fri Aug 23 22:26:46 2002), 站内信件

不知道你是什么情况
但是可以说说编码问题
Java是用Unicode的,
而本地机由于不同操作系统就会使用不同编码方式,比如我们用的中文系统就应该是GBK(
原来是GB2312,将成为GB18030)

相同的字节流在不同的编码方式中代表不同的字符
比如
0xa0b2 在GBK(国标扩展码)中就代表‘阿’字
而在Unicode中就可能是一个 奇形怪状 的字符

同样的一个相同字符在不同编码方式中对应不同字节流
比如‘阿’字在GBK中用0xa0b2表示
在Unicode中就可能用0x2342表示

所以java通过文件读入形成字符串(Unicode)时要根据本地编码方式将字节流转换成
Unicode字节流,比如本地的编码方式是GBK,那么0xa0b2就将被转换为0x2342,当你
System.out.print()的时候,系统又将Unicode反转回GBK字节流

同样你向网页里面out.print的时候也将Unicode转换成了GBK字节流(GBK向上GB2312
兼容),别人看的时候看到这是个GB2312的网页,就用这种编码方式理解里面的字节流。

实在是不好意思,写了好多,现在我告诉你“我不知道数据库为什么会有乱码”。但是我
相信你已经能够知道大概是怎么回事了。无非是写入数据库的时候字符集转换了,但是
出来的时候没有转换,或是相反。你可以通过人工的进行字符集转换解决这个问题,用
getBytes("GBK")类似的语句。可能数据库用一些特殊字符集也说不定,比如ISO××××
那你就要进出都自己转换了





【 在 junire (我学JAVA的) 的大作中提到: 】
: 我按照书里面讲的在开头加入了charset="gb2312"
: 可以在网页正常显示中文可是如果一写入sql数据库
: 就变成????应该是乱码?
: 请问高手如何解决这个问题,不胜感激。。。


--

※ 来源:·BBS 水木清华站 smth.edu.cn·
页: [1]
查看完整版本: 1-1-16-2-14 请教一个jsp中文问题