`

乱码(三): 问题的出发点

阅读更多



    在乱码(一): 北京西直门迷路与乱码困惑 里, 笔者以"散文"的方式记叙了初次遇到乱码问题的心境. 不管心静好坏,问题还得要解决的. 在Linux 文件上传时目录汉字乱码问题??? 问答里, 记录了问题的起因以及围绕此问题的几次补充, 在此在特意感谢网友aone 的回答.
    为了下文讨论的方便, 这里再简短介绍下问题. 是这样的, 项目没问题也已经要正式发布了, 测试时是在一台Linux系统(这里记为A机)上的, 但A机好像是坏了, 正式用就把项目部署到另一台Linux机(记为B机)上. 但出问题了, 在A机上跑的很好的文件上传代码出乱码了.
    代码在A机上跑的好好的但在B机上不行, 应该是B机上配置有不合适的地方, 但A机坏了, 这样也就死无对证没法参考A机上的配置, 从头开始改配置.

    为了能高效地解决问题, 先梳理下现在项目中防止乱码做的保证, 毕竟这是问题的出发点, 也对自己以后解决同类问题有很大的借鉴作用.

        1, struts.xml文件中<constant name="struts.i18n.encoding" value="UTF-8"></constant>
        2, web.xml中加了如下的Filter:
            <filter>

        <filter-name>encodingFilter</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>
    
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

      3, 有的JSP文件中加如下代码:
            <%@ page language="java" errorPage="/error.jsp" pageEncoding="gbk "  contentType="text/html;charset=utf-8 "%>
        大多JSP中是:
            <%@ page language="java" errorPage="/error.jsp" pageEncoding="utf-8 " contentType="text/html;charset=utf-8 " %>

        没有设置网上常见的:
                <%

 request.setCharacterEncoding("UTF-8"); // --- (1)
%>
可能原因是web.xml中配置了 CharacterEncodingFilter中已加了类似的处理.
CharacterEncodingFilter源码, 发现" request.getCharacterEncoding() == null ",也就是说,JSP页面中可能通过 (1)处的设置来覆盖这个filter中的配置.
        if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null )) {
            request.setCharacterEncoding(this.encoding);
            if (this.forceEncoding && responseSetCharacterEncodingAvailable) {
                response.setCharacterEncoding(this.encoding);
            }
        }
        responseSetCharacterEncodingAvailable变量是这样的获得的;
            private final static boolean responseSetCharacterEncodingAvailable = ClassUtils.hasMethod(HttpServletResponse.class,"setCharacterEncoding", new Class[] {String.class});

    4, Tomcat的server.xml文件中:
        <Connector port="80" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8 " useBodyEncodingForURI="true"/>

    5, Java代码中负责Ajax响应的代码:
           public void listCityByProId() {
         getResponse().setContentType("text/xml;charset=utf-8 ");
         getResponse().setHeader("Cache-Control","no-cache");
         try{//response写信息
                // do something here.
         }catch(IOException e){
            e.printStackTrace();
         }
    }

    项目中用的是UTF-8的编码, 这是问题的出发点.

 

1
1
分享到:
评论

相关推荐

    在程序开发中的乱码问题解决办法

    本文将从多个角度出发,探讨如何在不同的环境下解决中文乱码问题,并给出具体的解决方案。 #### 解决方案 ##### JSP页面中文乱码问题 1. **修改JSP文件编码** - 针对特定的JSP文件,可以通过修改文件的编码来...

    tableExport导出pdf 中文 乱码解决

    要解决这个问题,我们需要关注几个关键点: 1. **HTML页面编码**:确保你的HTML页面使用正确的字符编码,通常是UTF-8。在`&lt;head&gt;`标签内添加`&lt;meta charset="UTF-8"&gt;`来设定页面编码。 2. **jQuery插件配置**:`...

    中文乱码处理大全.docx

    《中文乱码处理大全》 在信息技术领域,中文乱码是一个常见的问题,特别是在...在实际开发中,我们不仅要理解这些技术点,还需要养成良好的编码习惯,如统一文件编码、正确设置项目配置等,以避免中文乱码问题的出现。

    IE浏览器在post提交时中文乱码的解决方法

    首先,了解编码的基础概念是解决中文乱码问题的出发点。字符编码是一种对字符集中的字符进行编码的规则。在计算机和网络世界中,常用字符集有ASCII、Unicode、UTF-8等。UTF-8是一种针对Unicode的可变长度字符编码,...

    法律尽职调查常见问题(三).pdf

    不过,根据文件标题《法律尽职调查常见问题(三).pdf》以及描述“法律尽职调查常见问题(三).pdf”,我们可以推测文件内容应与法律尽职调查相关,并尝试从法律尽职调查的角度出发,提供相关的知识点。 法律尽职调查...

    学校三分类三升级调研报告.pdf

    由于提供的文件信息内容并不具备实际可分析的文本内容,而是一系列乱码字符,故无法直接从中提取出具体的知识点。为满足您的要求,我会使用“学校三分类三升级调研报告”作为主题,假设一个可能的内容场景,展开关于...

    :\坏蛋是怎样炼成的1全.txt

    2. **乱码与字符编码问题**:这段文本在显示时出现乱码,可能是因为字符编码不匹配导致的问题。 3. **异常数据处理**:在程序开发中,如何有效处理这类异常数据,避免系统崩溃或数据丢失。 ### IT知识点详细说明 #...

    CAD三维建模在高铁桥梁施工技术交底中的可视化应用.pdf

    从这个标题出发,我们可以构建以下知识点: 1. CAD技术简介 CAD技术是一种借助计算机技术进行设计的技术,它能帮助工程师、设计师进行图形设计和工程绘图。CAD技术的应用极大促进了设计的精确性、效率性和修改的...

    论文研究-求解TSP问题的混合遗传算法.pdf

    根据标题和描述,我们可以总结以下知识点: 1. 旅行商问题(TSP)的基本概念:理解TSP问题的定义,知道它是一个寻找最短可能路径的优化问题,同时了解它的应用背景和重要性。 2. NP-hard问题的含义:认识到TSP问题...

    高频电子线路问题汇总(带答案的哦).pdf

    尽管内容片段难以理解,我们可以从“高频电子线路”这一主题出发,梳理出高频电子线路的常见知识点。高频电子线路通常涉及以下几个核心内容: 1. 高频电子线路定义:在电子工程领域,高频通常指的是频率高于100kHz...

    初三下册圆的知识点.pdf

    下面详细说明这些知识点: 1. 圆的基本概念: 圆是平面内到定点(圆心)距离等于定长(半径)的点的集合。圆周率π是一个数学常数,表示圆的周长与其直径的比率。 2. 圆的性质: 圆具有轴对称和中心对称的性质,...

    三年级劳动教育课教案.pdf

    不过,我们可以从“三年级劳动教育课教案.pdf”这个标题本身出发,来探讨劳动教育在小学三年级课程中的意义和相关教学内容。 劳动教育是教育体系中不可或缺的一部分,它旨在培养学生的劳动观念、劳动技能和良好的...

    PDF417编码小程序 有问题版本

    综上所述,解决这个"PDF417编码小程序 有问题版本"的问题,需要从PDF417编码的原理出发,检查C++代码的实现,特别是编码算法和输出图像的过程,以及可能的数据处理问题。通过对代码的调试和优化,应该能够找出并修复...

    JSP struts2 url传参中文乱码解决办法

    总结来说,解决JSP Struts2 URL传参中文乱码的问题需要从Struts2框架配置和Web服务器配置两个方面出发。通过适当配置Struts2框架的国际化编码设置,以及Web服务器处理URL的编码方式,可以有效解决通过URL传递中文...

    浅析电气工程及其自动化问题与对策.pdf

    但是,可以从文件的标题和描述出发,推测文档内容可能涉及的知识点,并进行详细说明。 首先,“电气工程及其自动化问题与对策”作为标题,暗示文档将围绕电气工程领域中自动化技术的应用问题进行探讨,并提出相应的...

    逻辑训练五百题.txt

    虽然原文似乎包含了一些乱码内容,但基于题目和描述,我们仍可以整理出一些重要的逻辑思维训练问题及其解析。 ### 逻辑训练五百题概述 《逻辑训练五百题》是一本专注于提升读者逻辑思维能力的书籍,包含了大量精心...

    疫情之后再出发:拓能韧-,倍道启航精品报告2020.pdf

    很抱歉,您提供的文件内容存在一些问题,包含了乱码和无法识别的字符,这导致我无法获取具体的IT相关知识点了。请您提供无乱码且内容明确的文件内容,以便我可以根据实际内容生成符合要求的详细知识点。由于直接以...

    tupian图片

    不过,基于题目要求,我们可以尝试从有限的可识别信息出发,尽可能地构建一些相关的知识点。 ### 知识点1:文档管理与个人使用 #### 内容概述 标题“tupian图片”以及描述中的“geren自己用的文档”表明这可能是一...

    同济第六版《高等数学》教案-第09章重积分.pdf

    由于提供的文件内容存在大量的OCR扫描错误,导致文本出现了大量的乱码和错误字符,这使得从这部分内容中提取知识点变得极为困难。但从标题和描述来看,这是一份关于同济大学第六版《高等数学》教案的内容,主要涉及...

Global site tag (gtag.js) - Google Analytics