Topic: 请教高手编码问题 (显示乱码)

  Print this page

1.请教高手编码问题 (显示乱码) Copy to clipboard
Posted by: seeker
Posted on: 2004-05-26 17:32

数据库使用的是8859_1的编码,我保存一条记录到数据库里,做如下的转换

new String(str.getBytes("GBK"), "8859_1")

数据库里不会发生编码丢失,也不会是乱码

但是如果显示的时候,GBK编码的字符串如果用8859_1的编码来读,为什么页面上就是乱码了?
我做手工转换和显示的时候有什么区别?忘高手指教!

2.Re:请教高手编码问题 (显示乱码) [Re: seeker] Copy to clipboard
Posted by: javaisme
Posted on: 2004-05-27 09:10

如果要正常显示,再转换成可以显示中文编码

如果是jsp,在页面最前面加上:
<%@ page contentType="text/html;charset=GBK" %>

如果是在javabean 封装类里加上这些方法,方便转换;
public String getStr(String str)//对中文作内码转换
{
  try
  {
    String temp_p=str;
    byte[] temp_t=temp_p.getBytes("ISO8859-1");
    String temp=new String(temp_t,"GBK");
    return temp;
  }
  catch(Exception e)
  {
  }

  return "null";
}
public String getStrISO(String str)//对中文作内码转换
{
  try
  {
    String temp_p=str;
    byte[] temp_t=temp_p.getBytes("ISO8859_1");
    String temp=new String(temp_t);
    return str;
  }
  catch(Exception e)
  {
  }

  return "null";
}
public String getStrGBK(String str)//对中文作内码转换
{
  try
  {
    String temp_p=str;
    byte[] temp_t=temp_p.getBytes("Unicode");
    String temp=new String(temp_t, "Unicode");
    return str;
  }
  catch(Exception e)
  {
  }

  return "null";
}

3.Re:请教高手编码问题 (显示乱码) [Re: seeker] Copy to clipboard
Posted by: seeker
Posted on: 2004-05-27 10:20

谢谢楼上的回复,我想知道的是为什么

new String(str.getBytes("GBK"), "8859_1")

这样转码不会得到乱码,而显示的时候GBK用8859_1显示会得到?号

4.Re:请教高手编码问题 (显示乱码) [Re: seeker] Copy to clipboard
Posted by: tintin365
Posted on: 2004-06-03 09:01

new String(str.getBytes("GBK"), "8859_1")
这句表示将str从gbk转化到8859-1
显示的时候,因为中文字符在8859-1中不存在,当然是乱马了。
不过强烈简易你不要用这些方法实现中文化


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923