`

乱码(四): 撬动地球的支点

阅读更多

       写下这个标题,我自己先笑了下, 口气有些大了. 不过,这么大的一个标题,倒是反映了我当时心情, 也就是我解决乱码问题过程中一个关键的转折点. 这里围绕这个关键转折点把当时的情况记录一下来.

      前面在"乱码(三): 问题的出发点 "中,  根据分析得出解决问题的用力点应该是"/etc/sysconfig/i18n"这个文件. 但折腾了些时间后(围绕这个i18n改动时的问题记录详见"乱码(二): Linux下/etc/sysconfig/i18n究竟是干什么用的? "). TMD怎么还不行呢? 但问题还是要解决的,得另找突破口. 

      .............

      一段搜索后, 对编码问题也有了个相对深刻的认识, 也跌跌撞撞地想到了Java中的Charset类, 于是习惯性地看源码,发现两个让眼前一亮的方法: defaultCharset和availableCharsets.
      写代码试它一试.
      availableCharsets方法没什么新奇的,顾名思义,用它可以得到当前Java所支持的字符集.
      写体验defaultCharset方法代码时,从它输出结果上联想到一个跟当前乱码问题相关的一点: 这个方法返回当前JVM默认的字符集(通常是操作系统的字符集),  那不是通过这个方法就可以看出乱码问题"元凶"Linux所有字符集了?!! 因为从"乱码(二): Linux下/etc/sysconfig/i18n究竟是干什么用的? "里结果发现单独改i18n文件好像是起作用. 而乱码问题的最终落脚点是把字符串按操作系统使用的字符集来组装, 这样操作系统才能显示出人能读懂的文字来.

      基于这样的思考,赶紧把实验defaultCharset方法的Java例子传到Linux上. 于是有了"乱码(二): Linux下/etc/sysconfig/i18n究竟是干什么用的? "里的图片对比信息!!!
      又"鬼使神差"地想到: 既然改i18n文件不行, 那何不在Linux上Tomcat启动时利用"export LC_ALL=zh_CN.GBK"命令对字符集做下修改呢? 再在文件上传的的相应代码里加上'new String(uploadDir.getBytes(),"GBK");',这样不就两头凑地解决了问题??

      赶快行动, 成功了! 上传的文件名不再乱码了!

      再回过头看整个过程, 虽然最终代码中没有体现出defaultCharset方法, 但它却恰恰成了"撬到地球的支点", 没有它的牵线搭桥就不会很快想出两头凑的解决方案来.

1
2
分享到:
评论
1 楼 metadmin 2009-03-30  
我在web环境下,对于乱码,采用filter来做的。
tomcat分发包里面自带的类:
filter.SetCharacterEncodingFilter

------------------
权限管理圈子欢迎您:
http://accessmanager.group.iteye.com/

相关推荐

    HttpClient、乱码解决:实例

    3. 使用EntityUtils处理乱码:EntityUtils提供了一些方法来处理HTTP实体,如`toString()`方法,它可以自动处理字符编码。确保传递正确的字符集参数。 4. 自定义解码:如果以上方式无法解决问题,可以自定义解码逻辑...

    处理pdfmarker中文乱码及内存溢出的处理

    然而,在实际操作中,用户可能会遇到一些常见问题,比如中文乱码和内存溢出。本文将深入探讨这两个问题的原因及其解决方案。 首先,我们来谈谈PDFMaker中的中文乱码问题。在处理中文字符时,PDF生成工具如果没有...

    乱码解决 乱码解决 乱码解决 乱码解决 乱码解决

    在IT领域,乱码问题是一个常见的困扰,尤其是在处理文本数据时。乱码通常指的是字符显示不正确或无法识别,这可能由于编码格式不匹配、文件损坏、程序设置不当等原因引起。下面将详细讨论乱码产生的原因、解决方案...

    RTC解决中文乱码

    RTC解决中文乱码 d := RtcStringToBytes(read); Memo3.Lines.Text := Response.HeaderText; // 显示下http头 if TRegEx.IsMatch(UpperCase(string(PAnsiChar(d))), 'GBK|GB2312') then Memo1.Lines.Text := ...

    c++ 读写txt文件和乱码问题解决

    然而,在处理不同编码格式的TXT文件时,尤其是涉及到UTF-8编码时,可能会遇到乱码问题。下面将详细讨论如何在C++中正确地读写TXT文件以及如何解决可能出现的乱码问题。 首先,我们来看C++如何读取TXT文件。C++标准...

    asp.net中文乱码:asp.net(C#)中文乱码问题

    asp.net默认的编码是UTF-8 js文件里的编码也是UTF-8 当你要在aspx页面上进行传中文参数时会出现乱码 asp.net中文乱码:asp.net(C#)中文乱码问题 接收参数页-----> 传送参数页----->

    linux下中文乱码问题

    Linux 下中文乱码问题解决方法 Linux 操作系统中,中文乱码问题是一个常见的问题,它是由系统集成的字符集引起的。由于不能正确地使用相对应字符的字符集,因此 OS 不能识别出文字,导致了乱码。解决这个问题的方法...

    php中url地址栏传参数中文乱码解决方法汇总

    使用 mb_convert_encoding() 函数解决中文乱码问题: mb_convert_encoding() 函数是 PHP 内部多字节字符串编码转换函数,可以在有需要的使用场合,几乎支持所有编码。例如: `$gonghui = $_GET['gh'];` `$gonghui ...

    C#连接Sybase数据库,并解决C#读取Sybase乱码的问题

    4,乱码问题:sybase使用latin1字符集的时候,c#中读取字符串会是乱码,进行如下转换就行: System.Text.Encoding.GetEncoding("gbk").GetString( System.Text.Encoding.GetEncoding("latin1").GetBytes( s );

    乱码解决大全.doc

    乱码解决大全 编码是计算机中最基本的概念之一,它是计算机对字符的表示方法。常见的编码有 UTF-8、GBK、GB2312、ISO-8859-1 等。其中,UTF-8 是最常用的编码之一,支持多种语言的表示,包括中文、大写字母、特殊...

    layui分页表格及日期乱码.zip

    1. layui表格乱码: layui表格的数据通常是从后端接口获取的,如果后端返回的JSON数据中包含非UTF-8编码的字符串,前端在解析时未指定正确的编码方式,就可能导致乱码。解决方法是确保服务器返回的数据统一采用UTF-...

    GDAL1.92 修改S57中文乱码

    6:修改读取S57海图数据中文属性值乱码 e:\3rdPart\gdal-1.9.2\ogr\ogrsf_frmts\s57\s57reader.cpp line 883 // Add By liml 2013-04-25 Convert UCS-2 to Utf-8 const char* pachBuffer = poRecord->...

    彻底解决PHPMailer中文邮件标题内容收件人乱码问题

    只有两个文件。 ...经过从网上上收集的资料,我也是这么解决。...第一:修改邮件内容乱码: 第二:修复邮件标题乱码 第三:修复其他地方乱码 来源网页:http://www.lgocl.com/blog/post-46.html

    解析Java中文乱码的处理方法

    Java编程语言在处理中文字符时,可能会遇到乱码问题,这通常是由于编码设置不正确或者在数据读写过程中没有统一编码格式导致的。本篇文章将深入探讨Java中处理中文乱码的各种方法,帮助开发者有效解决这类问题。 ...

    使用C+解决Linux中文乱码问题.docx

    在使用C++编程时,遇到Linux系统中处理中文字符出现乱码的问题是一个常见的困扰。这个问题主要涉及字符编码、文件读写、字符串操作以及跨平台兼容性。以下将详细解释这个问题的根源及其解决方案。 首先,我们要了解...

    乱码解决_MYSQL.txt

    ### MySQL乱码问题解决方案 #### 一、理解MySQL字符集设置的重要性 在处理数据库操作时,字符集(Character Set)的正确配置对于确保数据的准确读取与存储至关重要。特别是对于包含多语言文本的应用场景,如中文、...

    springboot乱码问题解决方案

    SpringBoot乱码问题解决方案 SpringBoot框架是一款流行的Java Web开发框架,但是在实际开发中,开发者经常会遇到乱码问题,导致项目无法正常运行。为了解决这个问题,本文将详细介绍SpringBoot乱码问题解决方案,并...

    解决复制乱码:VS2010修复工具(修复copy中文乱码问题)

    解决复制乱码:适用于VS2010修复工具(修复copy中文乱码问题) VS2010乱码修复工具针对一些朋友在从VS2010复制代码到word文档中会出现乱码,VS2010乱码修复工具完美解决这个问题!

    关于Qt中translate、tr关系以及中文乱码的问题

    四、解决中文乱码的问题 解决中文乱码的问题可以使用 QTextCodec::setCodecForCStrings 或 QTextCodec::setCodecForTr 函数来指定编码。例如,使用 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB...

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    ### jsp乱码解决方案 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,字符编码问题是一个经常遇到的技术难题。如果处理不当,很容易导致网页显示乱码,影响用户体验及数据的正确性。...

Global site tag (gtag.js) - Google Analytics