java连接mysql数据库时有关中文乱码的问题

原创   java与mysql乱码的问题 收藏

<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "/r/n/n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } </script> <script class="blogstory">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

解决方法一:(最重要的一种方法)
你看下my.ini,有无
[mysql]

default-character-set=utf8

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
然后建立表时,也要用(比如)
DROP   TABLE   IF   EXISTS   `Company`;
CREATE   TABLE   IF   NOT   EXISTS   `Company`
(
    `Cname`   VARCHAR(10)   NOT   NULL,
    `Caddr`   VARCHAR(100),
    `Ctel`     VARCHAR(16)
)ENGINE=InnoDB   DEFAULT   CHARSET=UTF8;
这样就没问题。

如果是jsp要声明:
contentType="text/html;charset=gb2312"


解决方法二:

连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为utf-8,具体代码如下

//装载mysql-jdbc驱动

Class.forName("com.mysql.jdbc.Driver").newInstance();

//连接数据库

Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?                         user=root&password=1&useUnicode=true&characterEncoding=utf-8" );


解决方法三:

如果方法一不行那么在方法一的基础上对读入的字符串进行强制编码方式转换。

代码示例如下:

String name = rst.getString("name");
name= new String(name.getBytes("ISO-8859-1"),"utf-8");

注:代码也可以为:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"utf-8"));其中rst为返回的 resultset,ISO-8859-1为mysql默认的编码方式,代码的目的是把以ISO-8859-1的编码转换为gb2312编码方式,这样强 制转换,可以解决一部分问题,如果结合方法一,应该可以解决中文乱码问题。


解决方法四:

这个方法在有些文章里是首推的,我首先也是试了这个方法,但是好像不行。这里还是说一下,不知是不是我操作错误。还是先贴原文吧:

"如果数据库中有中文的话而mysql默认的语言不是中文时要在配置文件C:winntmy.ini 中的 [mysqld] 里添加一行:

default-character-set=utf-8

然后重起mysql


方法五:在tomcat conf  里面的web.xml里面更改:

<filter>  
          <filter-name>UTFEncoding</filter-name>  
          <filter-class>com.founder.chenph.Util.EncodingFilter_UTF8</filter-class>  
          <init-param>  
              <param-name>encoding</param-name>  
              <param-value>UTF-8</param-value>  
          </init-param>  
      </filter>  
          <filter-mapping>  
          <filter-name>UTFEncoding</filter-name>  
          <url-pattern>*.jsp</url-pattern>  
      </filter-mapping>  
      <filter-mapping>  
          <filter-name>UTFEncoding</filter-name>  
          <url-pattern>*.do</url-pattern>  
      </filter-mapping> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值