萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 531|回复: 1

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

[复制链接]
发表于 2003-5-11 22:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

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

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

  1. import java.io.*;

  2. public class TransFormat{

  3.     private static boolean orTrans = true;

  4.     public static String unicodeToGB(String strIn){
  5.         if (orTrans) {
  6.             byte[] b;
  7.             String strOut = null;
  8.             if(strIn == null || (strIn.trim()).equals(""))
  9.                 return strIn;
  10.             try{
  11.                 b = strIn.getBytes("GB2312");
  12.                 strOut = new String(b,"ISO-8859-1");
  13.                 } catch (UnsupportedEncodingException e){}
  14.                 return strOut;
  15.         } else {
  16.             return strIn;
  17.         }
  18.     }
  19.     public static String GBToUnicode(String strIn){
  20.         if (orTrans) {
  21.             String strOut = null;
  22.             if(strIn == null || (strIn.trim()).equals("")) {
  23.                 return strIn;
  24.             }
  25.             try {
  26.                 byte[] b = strIn.getBytes("ISO-8859-1");
  27.                 strOut = new String(b,"GB2312");
  28.                 } catch (Exception e) {}
  29.                 return strOut;
  30.         } else {
  31.             return strIn;
  32.         }
  33.     }
  34. }
复制代码

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


--
Gfcae <gfcae@163.com>


※ 修改:·gfcae 於 Aug 23 22:20:40 修改本文·[FROM: 211.150.235.232]
※ 来源:·BBS 水木清华站 smth.edu.cn·[FROM: 211.150.235.232]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 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·[FROM: 162.105.80.90]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-7 12:51 , Processed in 0.069511 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表