Mysql 遇到的编码问题。

   今天帮小朋友做一个项目,碰到一个挺搞的问题。在帮她安装mysql的时候一直是next,没有去注意一些细节,不晓得有没有漏掉设置编码那一部分=。=。

   结果在用sql文件导入数据库MySQL -h localhost -u root -p xxx < e:\xxx.sql  执行的时候错误提示出来了,显然是编码的问题,(问题描述类似这样:)后来用status看了一下。

   server characterset,DB characterset,client characterset,conn characterset 都是Latin1. 显然问题出现在这里。然后停止了服务,找到my.ini,修改了相应的地方。在[mysql][mysqld][client] 的默认编码改成gbk。启动服务,搞定~

   不过这样的问题的背后其实并没有那么简单,在网上找找资料,摘录并总结如下:

  1.    server本身设定问题,例如还停留在latin1.(我刚才的问题)
  2. JSP设计页面上是中文,但运行时看到的是乱码,如果是这种情况,就要指定jsp页面的编码,默认情况下,jsp页面的编码是ISO-8859-1,解决方法就是在jsp页面的编码地方加入

     

  3. <%@ page language="java" contentType="text/html;charset=utf8" %>,
    当用Request对象获取客户提交的汉字时,会出现乱码,那么就需要在项目中加入filter了,(filter在tomcat中自带的有例子,可以照着例子改一下,也可以在googl中搜索一下)
    由于使用doget方法引起的乱码,可以试着使用dopost提交,
    或者是打开tomcat的server.xml文件,找到区块,加入如下一行: 

    URIEncoding=”GBK” 

    完整的应如下: 
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100" debug="0"
     connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf8"/>
    需要重启tomcat。

  4. 写入到数据库是乱码: 
    如果你是通过JDBC直接链接数据库的时候,配置的代码如下:
    jdbc:mysql://localhost:3306/xxxxx?useUnicode=true&characterEncoding=utf8,
    这样保证到数据库中的代码是不是乱码。

   

转载于:https://www.cnblogs.com/terryheihei/archive/2013/05/21/3091879.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值