zoukankan      html  css  js  c++  java
  • 中文乱码总结

    首先考虑数据库、xml配置、jsp页面等的字符集charset是否统一。在字符集统一的情况下,各种中文乱码可能出现的原因。

    Web页面乱码

    1、response的ContentType属性

    比如可以在jsp页面中直接设置
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    在<head>标签中添加
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    还比如
      在Controller中直接使用 response.getWriter().write(jsonArray.toString()); 乱码
      需要加上 response.setContentType("text/html;charset=utf-8");

    response.setContentType()的作用是使客户端浏览器,区分不同种类的数据,并根据不 
    同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。 
    例如:web浏览器就是通过MIME类型来判断文件是GIF图片,通过MIME类型来处理json字符串。 
    Tomcat的安装目录confweb.xml 中就定义了大量MIME类型 ,可以参考。 
      response.setContentType(“text/html; charset=utf-8”); html 
      response.setContentType(“text/plain; charset=utf-8”); 文本 
      esponse.setContentType(“text/javascript; charset=utf-8”); json数据 
      response.setContentType(“application/xml; charset=utf-8”); xml数据

    2、xml配置encoding

    SpringMVC配置视图解析器编码

    <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
        <property name="prefix" value="/WEB-INF/views/templates/" />
        <property name="templateMode" value="HTML5"/>
        <property name="characterEncoding" value="UTF-8"/>
    </bean>

    web.xml中配置过滤器

    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    3、是否是JS导致了乱码
      看看有没有字符集charset的地方,与代码中的不一致

    也可以直接给js添加字符集
      <script type="text/javascript" language="javascript" src="scripts/function.js" charset="gb2312"></script>

    读取properties文件乱码

    流的转换中常常出现中文乱码,解决办法:


    1、在读的时候注意添加字符集

    BufferedReader bf = new BufferedReader(new InputStreamReader(is, "UTF-8"));

    InputStream is = resource.getInputStream();
    try {
         BufferedReader bf = new BufferedReader(new InputStreamReader(is, "UTF-8"));
         props.load(bf);
    } finally {
         s.close();
    }

    2、先转换成byte[]数组,再转换成String

    打印到PDF字体乱码

    服务器上没有对应的字体

    原创文章,欢迎转载,转载请注明出处!

  • 相关阅读:
    Silverlight 控件绑定到对象
    开源编辑器Makedown的安装
    ASP.NET 4 和 Visual Web Developer 中的新增功能
    空间新闻模块CSS
    P2P之王者电骡Emule技术分析
    QQ向陌生人聊天的autoit脚本
    Er 一个开源游戏的诞生
    一个不错的源代码语法高亮插件dp.SyntaxHighlighter
    Aut2Exe编译au3脚本为可执行文件
    模拟:悬停和纯双点击移动设备的CSS
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/luanma.html
Copyright © 2011-2022 走看看