zoukankan      html  css  js  c++  java
  • 编码与乱码

     

    乱码的根源

    源编码与目标编码的不一致. 而中文window系统默认编码GBK,害惨了多少程序员.

    要尽量减少出现乱码,我个人认为要做到5码合一, IDE(Eclipse/idea),页面(jsp/其他模板引擎),应用服务器(tomcat等), 源码(Java源码及周边文件),数据库编码.

     

    将Eclipse设置为UTF-8

    打开Eclipse安装目录下的eclipse.ini,在最末尾新增一行

    -Dfile.encoding=UTF-8
    

    修改之后的,重启eclipse即可.

     

    JSP页面编码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    
     

    tomcat编码

    打开 tomcat安装目录下的 binsetenv.bat ,该文件通常不存在,新建之, 添加如下内容

    set JAVA_OPTS=-Dfile.encoding=UTF-8
    

    打开confserver.xml, 在8080端口所属的Connector节点,添加URIEncoding,可解决大部分GET请求中文乱码的问题

    URIEncoding="UTF-8"
    
     

    源码的编码

    通常情况下, 文件本身的编码,取决于新建文件时,IDE或Project的编码.

    另外一个隐藏的编码,是maven/ant编译java源文件时使用的编码

    maven的配置如下

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
     

    数据库编码

    通常来说,如果其他4码解决了,那大部分情况下是mysql会出现编码问题

    mysql有4个编码

    Server characterset:    utf8      // 服务器字节集
    Db     characterset:    utf8      // 当前数据集字节集
    Client characterset:    utf8      // 客户端字节集
    Conn.  characterset:    utf8      // 当前连接的字节集
    

    修改my.ini的mysqld小节,设置服务器字符集,是最佳解决方式

    [mysqld]
    character-set-server = utf8
    

    然而,对于现有系统,全局修改的风险比较大,所以,可以在客户端解决,即jdbcurl上做配置

    jdbc:mysql://127.0.0.1/nutzdemo?useUnicode=true&characterEncoding=UTF-8

    参考资料:

    1.编码与乱码 (wendal大神)

  • 相关阅读:
    log4net配置文件详解
    Window 中杀死指定端口 cmd 命令行 taskkill
    weui获取checkbox选中值 带GIF效果演示
    动态新增行数据
    JAVA的WebService创建和使用
    Linux-20211008
    SpringBoot
    winfrom将控件保存为图片
    VB相关记录
    代码编辑说明文档
  • 原文地址:https://www.cnblogs.com/jycjy/p/11570438.html
Copyright © 2011-2022 走看看