zoukankan      html  css  js  c++  java
  • jsp+jqueryeasUI+mysql乱码 skyCc

    首先说明几点:
    在文件中任何时候出现utf-8、UTF-8、utf8、UTF8其作用都是一样的。但是标准形式是:UTF-8。网上许多文章还煞有介事的特别指出其一个个的区别,纯属无稽之谈。

    我使用的软件环境:
    中文WIN7(linux可作相应修改)
    Apache Tomcat 6.0 Server
    MyEclipse 8.5GA
    phpMyAdmin 3.2.5
    MySQL 5.2.12-nt

    按下面步骤修改:

    一、在JSP静态文件中正确显示UTF-8:

    1、JSP文件用支持UTF-8的文字编辑器编辑,如EditPlus、UltraEdit,并把原来ascii转换成utf-8(菜单里有)。

    2、JSP文件头改成:
    <%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*"%>
    有无这句无所谓(但在.html文件中是必要的):
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    </head>

    二、FORM的正确提交:

    1、java文件中getParameter之前加入:
    request.setCharacterEncoding("utf-8");
    这一步也可以用Filter加入过滤器的办法,参见其它文章。

    2、request时,只需要写成最简单的形式:
    String name1= new String(request.getParameter("username"));
    String pwd1= new String(request.getParameter("password"));
    (补充:为了更好地防止乱码,可以采用两次(jsp文件中JavaScript)encodeURI方法以及对应java文件中一次URLdecoder.decode()方法。)

    三、连接mysql:

    1、mysql配置文件:
    修改mysql在windows\my.ini里default-character-set=utf8
    (补充:可以在命令行中修改:set names utf-8,这个我没试过,但是我之前建数据库时是使用的utf8_unicode_ci进行整理,连接校对为utf8_general_ci,之后在命令行中使用MYSQL命令行进行了所有设置:
    mysql> SET character_set_client = utf8 ;
         mysql> SET character_set_connection = utf8 ;
         mysql> SET character_set_database = utf8 ;
         mysql> SET character_set_results = utf8 ;
         mysql> SET character_set_server = utf8 ;

         mysql> SET collation_connection = utf8 ;
         mysql> SET collation_database = utf8 ;
         mysql> SET collation_server = utf8 ;(这三项相当于SET names utf8;)
    但是后来存在一个问题,那就是从命令行插入数据,在phpmyadmin里面还是乱码,在JSP页面显示出来的也是乱码,用命令行进行查询也是乱码,后来我又用了SET names GBK;但是不是所有的都改变了,也不知道怎么回事,运行以下命令如下:

    show variables like '%character%';
    --------------------------+-------------------------------------
    character_set_client     | gbk
    character_set_connection | gbk
    character_set_database   | utf8
    character_set_filesystem | binary
    character_set_results    | gbk
    character_set_server     | utf8
    character_set_system     | utf8
    character_sets_dir       | F:\Web\MySQL-5.0.89\share\charsets\

    mysql> show variables like '%collation%';
    +----------------------+-----------------+
    | Variable_name        | Value           |
    +----------------------+-----------------+
    | collation_connection | gbk_chinese_ci |
    | collation_database   | utf8_unicode_ci |
    | collation_server     | utf8_general_ci |
    +----------------------+-----------------+
    3 rows in set (0.00 sec)
    反正这样之后从mysql命令行到phpmyadmin插入中文和显示都没有问题。但是每次运行命令行插入中文数据之前都要SET names gbk;才能正常插入中文数据。

    2、mysql里数据库和表也都设为utf8_unicode_ci

    3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
    注意,关键就在于此:在.java和.jsp文件中此句中间是'&'而不是'&amp;',但是在.xml文件中需要是'&amp;';
    至此,在页面上显示中文、从数据库读取并显示、插入、修改中文都正常了。
    并且由于是utf-8,您可以试一下,在form里同时输入中文、英文、日文、韩文,照样正常显示。

    虽然没有完全测试过,但在我的使用中操作系统、JDK、TOMCAT或resin的编码对此问题没有造成影响。
    我测试时初始化显示的JDK就是GBK、zh,但没有问题。
    另外,.java文件是utf-8还是ascii编码都没有关系,生成的.class一样能用。

    至此大功告成,编码问题可以说是解决了。

  • 相关阅读:
    php CURL 发送请求封装
    PHP AES加解密(兼容php5,php7)
    vscode jshint 报'import' is only available in ES6 (use 'esversion: 6'). (W119)错误
    vue-cli4 + TS构建新项目
    搭建vue项目
    分享一个自然语言汉语时间语义识别的工具类
    图像检索阶段性总结
    mysql常用操作
    javascript在页面head内动态插入style
    iScroll-5拉动刷新功能实现与iScroll-4上拉刷新的一点改进
  • 原文地址:https://www.cnblogs.com/cmzcheng/p/2426128.html
Copyright © 2011-2022 走看看