📄 567790.xml
字号:
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='../csdn.xsl'?>
<Topic>
<Issue>
<PostUserNickName>福尔马林</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>111</credit>
<TopicId>567790</TopicId>
<TopicName>apache+tomcat3.2.3+mm.mysql+mysql3.22+jdk1.3.1中文问题,急!!!!分不够还可以再加..</TopicName>
<PostUserId>52370</PostUserId>
<PostUserName>formalin</PostUserName>
<RoomName>JSP</RoomName>
<ReplyNum>7</ReplyNum>
<PostDateTime>2002-3-11 11:25:24</PostDateTime>
<Point>100</Point>
<ReadNum>0</ReadNum>
<RoomId>28</RoomId>
<EndState>2</EndState>
<Content>环境:linux+apache+tomcat3.2.3+mm.mysql+mysql3.22+jdk1.3.1
在bean中更新数据库,在sql语句中的中文是好的(由打印内码得知),但是到了数据库里就都成了问号(内码全是3f)。
请各位帮帮忙,分不够还可以再加。</Content>
</Issue>
<Replys>
<Reply>
<PostUserNickName>冰雪天</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>100</credit>
<ReplyID>3780615</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>120249</PostUserId>
<PostUserName>lsb</PostUserName>
<Point>0</Point>
<Content>刚好解决了这个问题你就赶上了:
package db;
import  sun.io.*;
  /**
    *
    */
    ///////////////////////////////////////////////////////////////////////////////////////
  //字符转化类,其中封装了从Ascii到中文  与  从中文到Ascii  的静态函数                                                          //                                                                                        //
  ////////////////////////////////////////////////////////////////////////////////////////
  public  final  class  ChinessChange    {
  
          /**  Creates  new  ChinessChange  */
  
                public  static  String  AsciiToChineseString(String  s)  {
                          char[]  orig  =  s.toCharArray();
                          byte[]  dest  =  new  byte[orig.length];
                          for  (int  i=0;i<  orig.length;i++)
                                  dest[i]  =  (byte)(orig[i]&  0xFF);
                          try  {
                                  ByteToCharConverter  toChar  =  ByteToCharConverter.getConverter("gb2312");
                                  return  new  String(toChar.convertAll(dest));
                          }
                          catch  (Exception  e)  {
                                  System.out.println(e);
                                  return  s;
                          }
                  }
  
          public  static  String  ChineseStringToAscii(String  s)  {
                  try  {
                          CharToByteConverter  toByte  =  CharToByteConverter.getConverter("gb2312");
                          byte[]  orig  =  toByte.convertAll(s.toCharArray());
                          char[]  dest  =  new  char[orig.length];
                          for  (int  i=0;i<  orig.length;i++)
                                  dest[i]  =  (char)(orig[i]  &    0xFF);
                          return  new  String(dest);
                          }
                  catch  (Exception  e)  {
                          System.out.println(e);
                          return  s;
                  }
          }
  
  }
将此函数做成一个javabean在jsp中调用即可!</Content>
<PostDateTime>2002-3-11 11:35:41</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>宝宝猫</PostUserNickName>
<rank>一星(中级)</rank>
<ranknum>star1</ranknum>
<credit>100</credit>
<ReplyID>3781334</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>193243</PostUserId>
<PostUserName>jimjxr</PostUserName>
<Point>100</Point>
<Content>看看这个可能有启发:http://www.csdn.net/expert/topic/550/550063.xml?temp=.142666
“mysql支持中文的,你不必非用ISO8859,要让mysql支持中文你需要: 
1.  在mysql配置文件中配置default  charset:default-character-set  =  gbk 
2.  在jdbc连接时声明使用gb2312或gbk://host:3306/dbname?user=username&password=pass&useUnicode=true&characterEncoding=GBK”</Content>
<PostDateTime>2002-3-11 12:24:44</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>兰色梧桐</PostUserNickName>
<rank>四级(中级)</rank>
<ranknum>user4</ranknum>
<credit>100</credit>
<ReplyID>3781764</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>30847</PostUserId>
<PostUserName>Justin</PostUserName>
<Point>0</Point>
<Content>和 lsb(冰雪天)(▲▲) 的大同小异:
package db;
import java.util.*;
import java.sql.*;
import java.io.*;
public class DbConnection{
    // 这里是连接数据库等方法
    ....
    // to gb2312
    public static String bytes2gb(String gb) {
        String s =null; 
        if(gb!=null) { 
            try{ 
                s = new String(gb.getBytes("ISO8859_1"),"GB2312"); 
            }catch(Exception e) {
                System.out.println(e.toString()); 
                e.printStackTrace(); 
            } 
        } 
        return s; 
    } 
    // to bytes
    public static String gb2bytes(String bytes) {
        String s =null; 
        if(bytes!=null) { 
            try { 
                s = new String(bytes.getBytes("GB2312"),"ISO8859_1"); 
            }catch(Exception e){ 
                System.out.println(e.toString()); 
                e.printStackTrace(); 
            } 
        } 
        return s; 
    } 
}
使用方法:
凡是用到rs.getString()语句的改成:(从数据库读出文件)
db.DbConnection.bytes2gb(rs.getString("title"));
凡是request.getParameter()改成:(即将写入数据库的数据)
db.DbConnection.gb2bytes(request.getParameter("sign"));
基本就搞定了。</Content>
<PostDateTime>2002-3-11 12:52:54</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>福尔马林</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>111</credit>
<ReplyID>3782256</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>52370</PostUserId>
<PostUserName>formalin</PostUserName>
<Point>0</Point>
<Content>lsb的方法我试过了,不行。
转化後的字符串还好,可一进库里,就都成3f(?)了。
另外 to justin:对于数据库中已有的中文,用rs.getString()取出时,就已经变成3f了,任你再怎么编码又有什么用?
宝宝猫的方法我正在试,请大家继续提供方案。</Content>
<PostDateTime>2002-3-11 13:18:14</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>兰色梧桐</PostUserNickName>
<rank>四级(中级)</rank>
<ranknum>user4</ranknum>
<credit>100</credit>
<ReplyID>3786406</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>30847</PostUserId>
<PostUserName>Justin</PostUserName>
<Point>0</Point>
<Content>你没有试过吗?我可是在redhat linux7.0 ;redhat linux7.1; win2k下调试过的。</Content>
<PostDateTime>2002-3-11 17:04:27</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>兰色梧桐</PostUserNickName>
<rank>四级(中级)</rank>
<ranknum>user4</ranknum>
<credit>100</credit>
<ReplyID>3786556</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>30847</PostUserId>
<PostUserName>Justin</PostUserName>
<Point>0</Point>
<Content>你可能还是不明白我说的意思,给你个图表:
    汉字 --> gb2bytes() --> [database] --> bytes2gb() --> 显示
另外每个jsp页面要添加
<%@page contentType="text/html; charset=gb2312"%></Content>
<PostDateTime>2002-3-11 17:12:07</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>福尔马林</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>111</credit>
<ReplyID>3802136</ReplyID>
<TopicID>567790</TopicID>
<PostUserId>52370</PostUserId>
<PostUserName>formalin</PostUserName>
<Point>0</Point>
<Content>谢谢jimjxr(宝宝猫) 
我终于解决了中文问题,不过characterEncoding=ISO8859-1
再一次谢谢,可惜只能给100分。</Content>
<PostDateTime>2002-3-12 18:28:11</PostDateTime>
</Reply>
</Replys>
</Topic>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -