aaronbaiID:aaronbai
58912次访问,排名1713(-1)好友2人,关注者8
aaronbai的文章
原创 75 篇
翻译 0 篇
转载 18 篇
评论 14 篇
最近评论
longhua3311:我是在my.ini文件里改的
aaronbai:通常在使用AJAX时候,以下面方法创建
var xmlHttp; //首先定义一个全局域变量来保存对象的引用;
function createXMLHttpRequest(){
//该方法用来创建XMLHttpRequest对象的实例.
if(window.ActiveXObject){
xmlHttp = new ActiveXObjec……
SingleDancer:虽说东软是个大公司,但他的工资却不像一个大公司。简直扣的要命,我也是定制班的,11月13号他们就来了,打算去了
aaronbai:一个带有可输入下拉框的HTML页面代码:
<html>
<head>
<title>可输入的下拉框</title>
</head>
<body>
<div style="position:relative;">
&……
aaronbai:错误三:在UserDAOImpl.java中private String hql="from user u where u.username=?";这句HQL语句报错,如下:
org.hibernate.hql.ast.QuerySyntaxException: user is not mapped [from user u where u.username=?]
……
文章分类
收藏
    相册
    好友BLOG
    Aaronbai的猫窝
    学习交流
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JSP读出MYSQL数据库时的乱码问题解决方案收藏

    新一篇: JSP+JAVABEAN两层模开发式(新闻中心模块的实现) | 旧一篇: 第43届金马颁奖礼结束,郭富城连庄金马影帝创历史!

    问题:


      MYSQL在命令行终端下中文显示正常,但在JSP调用显出乱码!
     
      用JSP查询显示乱码,用(new String(string.getBytes("ISO-8859-1"),"gb2312")还是显乱码
     
    用<%@ page contentType="text/html; charset=GB2312;pageEncoding="gb2312"%>还是显乱码
     
     上面的编码中用UTF-8,GBK,GB2312,LATIN1,ISO-8859-1等编码试过了,结果还是乱码,不知道是何原因???



    解答:

    搞了半天终于搞定了
    还是MYSQL字符编码的问题
     
    默认的字符是LATIN1,如下:
    mysql> show variables like 'character\_set\_%';
    +--------------------------+--------+
    | Variable_name | Value |
    +--------------------------+--------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | latin1|
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | latin1|
    | character_set_system | latin1 |
    +--------------------------+--------+
     
     
    如果在 /etc/mysql/my.cnf里
     
    [mysqld]下添加default-character-set=utf8  
     
    比如:
    #
    # * Basic Settings
    #
    user        = mysql
    pid-file    = /var/run/mysqld/mysqld.pid
    socket        = /var/run/mysqld/mysqld.sock
    port        = 3306
    basedir        = /usr
    datadir        = /var/lib/mysql
    tmpdir        = /tmp
    language    = /usr/share/mysql/english
    #character_set_client=utf8
    #character_set_server=utf8
    #character_set_connection=utf8
    #character_set_database=utf8
    #character_set_results=utf8
     
    default-character-set=utf8  
     
     
    重启MYSQL,发现字符变化了,变化的是 character_set_server跟system
      mysql> show variables like 'character\_set\_%';
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | latin1 |  
    | character_set_connection | latin1 |  
    | character_set_database   | latin1 |  
    | character_set_filesystem | binary |  
    | character_set_results    | latin1 |  
    | character_set_server     | utf8   |  
    | character_set_system     | utf8   |  
     
    +--------------------------+--------+
     
     
    这时候向数据库插入中文字符,JSP显的还是乱码
     
    如果在MYSQL命令行中运行命令:set names utf8;
    再插入中文字符,OK!现在JSP 中中文显示正常!!
     
    set names utf8;命令相当于下面三条命令
    set character_set_client=utf8;
     
    set character_set_connection=utf8;
     
    set character_set_results=utf8;
     
    如图:
     
     mysql> show variables like 'character\_set\_%';
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | character_set_client     | utf8   |  
    | character_set_connection | utf8   |  
    | character_set_database   | latin1 |  
    | character_set_filesystem | binary |  
    | character_set_results    | utf8   |  
    | character_set_server     | utf8   |  
    | character_set_system     | utf8   |  
    +--------------------------+--------+
     
     
    character_set_server:这是设置服务器使用的字符集
    character_set_client :这是设置客户端发送查询使用的字符集
    character_set_connection :这是设置服务器需要将收到的查询串转换成的字符集
    character_set_results :这是设置服务器要将结果数据转换到的字符集,转换后才发送给客户端
     
     
    小总结:1.这样每次进入MYSQL终端运行set names utf8;可以搞定乱码,可是感觉比较烦,因为只对当前的会话有效,下次进入MYSQL仍然要运行这个命令。想在MY。CNF里加上
     
     
    character_set_client=utf8
    #character_set_server=utf8
    character_set_connection=utf8
    character_set_database=utf8
    character_set_results=utf8
     
    但是,这样不行,加了后MYSQL根本启动不起来,只能设置character_set_server=utf8这个,别的设置不了,如果 有哪个兄弟搞定了,麻烦告诉我一声!
     
     
    2..mysql字符集要设成utf8,可以在安装时设置,也可以在my.cnf里改(需要重新启动mysql
    #必须在[mysqld]这段
    [mysqld]
    default-character-set=utf8
    2.jdbc连接无需加characterEncoding,会自动检测
    jdbc:mysql://localhost/test
    实际上server端字符集不是utf8的话,加了也没用(jdbc:mysql://localhost/test&characterEncoding=UTF-8或者GBK)
    可能还会报错;是utf8的话,加不加都行
    3.mysql client记得加--default-character-set
    windows平台:
    mysql -u root -p --default-character-set=gbk
    linux平台:
    mysql -u root -p --default-character-set=utf8   (这个相当于进入MYSQL后运行set names utf8;)
    否则进去select中文是乱码,insert中文也不能正确保存

     
    4. <%@ page pageEncoding="UTF-8"%>这句是制定客户端的浏览器以什么字符查看本页面,
         相当于FIREFOX浏览器里的“查看”--》“字符编码”--》“UTF-8”,当然如果制定. <%@ page pageEncoding=“GB2312"%>那么查看本页面的浏览器里的字符编码变为GB2312

    发表于 @ 2006年11月26日 21:47:00|评论(loading...)|编辑

    新一篇: JSP+JAVABEAN两层模开发式(新闻中心模块的实现) | 旧一篇: 第43届金马颁奖礼结束,郭富城连庄金马影帝创历史!

    评论

    #minwoo 发表于2006-11-30 19:45:00  IP: 219.246.177.*
    在JAVA程序中向MYSQL插入中文时候,把插入的字符串做如下转换new String(insertString.getBytes("ISO-9558-1") );
    如果是单独的一个JSP页面向MYSQL插入中文数据,把插入的字符串做如下转换new String(insertString.getBytes("ISO-9558-1","UTF-8") );
    当然这要看自己的数据库字符编码和页面的字符编码,我的是LINUX,所以都用了UTF-8,在WIN下面改为GB2312吧!
    #aaronbai 发表于2007-04-29 13:39:57  IP: 202.118.2.*
    String newString=new String(oldString.getBytes("ISO-8859-1"),"UTF-8");
    #longhua3311 发表于2008-05-10 15:24:35  IP: 220.160.89.*
    我是在my.ini文件里改的
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © aaronbai