`

java 乱码问题

    博客分类:
  • java
阅读更多
   乱码问题
乱码问题在JAVA平台的jsp/servlet中可以说是非常令初学者头痛的事,甚至很多"高手"都不知所措.



我先说明,乱码问题绝对没有一种通用的方法来解决绝,除非你你都用i18n来定义和用UTF来传传输,显示,但这是不可能的.我们只有根本不同原因来用不同的解决方案.



要从底层解决乱码,要求程序员要熟悉数据在网络上和内存中的每一个字节是来源和去向,这样才能从根本上解决.



产生的原因:

1:数据传输入过程中没有按协议格式化.

2:没有根据当前环境决定显示方式.



下面为了说明,我们只讨论汉字乱码产生的原因:

从客户端提交给服务端,对于POST传送,目前的浏览器都能正确编码,但QueryString方法是程序员控制的,很多程序员根本不对中文的URL格式化,直接用中文作为参数传送,对于IE6这样的智能程序高的浏览器可以自动格式化,而老版本的浏览器测原方传送,则服务器端程序不能正确地从标准输入中取得.应该先格式化编码。



如果网络上或内存中原如数据是正确的,但要用正确的方式从byte转换成系统能显示的字符集.假设"我"的byte表示为78,63(只是例子),但78,63有可能表示日文的ぬ,那你就要告诉系统,你当前的byte[] b表示的是什么字符集.而我所见过的jsp/servlet容器中除了resin在

getParameter()这个方法实现中都是return new String(b//byte[]);而没有指定字集.WLS我没的反编译,所以不知道它的HTMLUtil这个类在实现时是如何指定字符集还是没有。如果各种方法不能解决,我们只能对BEA不敬了,把ServletRequestWrapper类decode出来,在getParameter()方法中直接return new String(b,"GBK")得了.这样省得在XML中配置又不起作用。同样从数据库中如果取得的数据乱码,我们只要把JDBC的ResultSet类decode出来,把其中的getString(int column)方法中的return new String(b)方法都强行加上"GBK"



这样取数据保证正确了,然后再来解决显示的问题,即使你的数据在内存中是正确的,你也指定了正确的字符集参数,仍然不能保证你看到的是正确的,原因是系统知道这个编码是对的,但它没有这种字符集来显示,或你用来显示的字集不对.这就是JSP中<%@page contentType="text/html;charset=xxxx"%>的作用,有人以为光这样就正确了,你要知道这句和 response.setContentType("text/html;charset=xxxx");是一样的,只它是告诉浏览器我现在发给你的内容是用xxxx字符集来解释的,只能在从网络上或内存中取得的数据是正确的前提下才有用.现在servet也1.2也支持设置客户端字符集的方法了:setCharacterEncoding.

所以乱码问题绝不是一种方法能解决的,我们一定要知道它产生的原因,从底层来进行原始数据的转换才能解决.其实找原因也很简单,在HttpUtil中加一个直接getBytes()方法,把得到的原始数据看看是不是你你传过来的.比如从QueryString传过来"我"aaa.jsp?name=我,那你看看它的byte中是不是我的值,如果是,说明传送没有问题,不是就是没有格式化.一步步下来,总是不难解决的。
分享到:
评论

相关推荐

    java乱码问题解决方法

    Java 乱码问题是 Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 Servlet 编程的中文问题及...

    Java乱码问题解决

    ### Java乱码问题详解与解决方案 #### 一、问题背景 在Java开发过程中,尤其是在处理中文字符时,经常遇到字符编码不一致导致的乱码问题。由于Java默认使用Unicode编码,而在中国大陆地区,常见的字符集为GB2312...

    Java乱码问题

    ### Java乱码问题详解 #### 问题描述与背景 在Java开发过程中,遇到“文件名.java:1: 错误: 编码GBK的不可映射字符”这类问题较为常见,尤其是在处理包含中文字符的代码文件时。这个问题通常出现在Windows操作系统...

    JAVA 乱码问题集合

    在Java编程中,乱码问题是一个常见的困扰,尤其是在处理字符编码时。以下是一些关键的知识点,可以帮助理解和解决Java中的乱码问题。 首先,我们需要理解字符编码的基本概念。字符编码是用来表示文本的一种方式,...

    java乱码问题

    在探讨“Java乱码问题”这一主题时,我们首先需要理解字符编码的基本概念以及它在Java编程中的应用。字符编码是计算机系统用来表示文本的一种方式,它将字符映射为特定的二进制数,以便于存储和传输。常见的字符编码...

    Java乱码问题解决方法

    Java乱码问题解决方法,java乱码怎么解决,java项目乱码,java乱码处理,

    字符集基础知识(描述解决java乱码问题的最详细的资料)

    字符集基础知识是编程领域不可或缺的一部分,特别是在处理多语言和国际化问题时。本文主要围绕字符集的概念,特别是如何解决Java中的乱码问题进行了详尽的解释。...通过深入学习和实践,所有Java乱码问题都将迎刃而解。

    Java开发乱码问题解决方法汇总

    Java开发乱码问题解决方法汇总 Java开发中乱码问题是非常常见的问题之一,而解决这些问题需要具备一定的技术知识和经验。在本文中,我们将总结一些常见的Java开发乱码问题解决方法,希望能够为读者提供帮助。 1. ...

    Java乱码学习 Java乱码学习

    Java 乱码问题一直是开发...总结来说,Java乱码问题需要从源头(文件编码)、编译过程、网络传输以及服务器处理等多个层面进行排查和设置。了解并掌握这些知识点,将有助于我们更好地预防和解决Java环境下的乱码问题。

    java乱码问题的解决

    当你编写代码时是不是也遇到了乱码问题 尤其是jquery post提交 来下载看看吧 你会有所收获 (个人总结 针对不同情况)

    java乱码终极必杀技

    本篇文章将深入探讨Java乱码问题的解决方法,为你提供终极必杀技。 首先,我们需要了解编码的基础知识。ASCII是最早的基础字符集,包含128个字符,而Unicode则是包含了世界上大多数语言字符的编码标准,如UTF-8、...

    java中文乱码问题详解--- java中文乱码问题详解

    ### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...

    关于java乱码学习的一点总结

    Java 乱码问题一直是开发者们头疼的问题之一,它涉及到字符编码的不同阶段,包括源文件编码、编译过程、运行环境以及网络传输等多个环节。本文主要针对这些方面进行深入的探讨和总结。 首先,我们需要理解“内码”...

    java乱码的解决方案

    ### Java乱码问题及其解决方案 在Java开发过程中,字符编码问题常常导致中文显示为乱码。乱码问题可能出现在各种场景下,例如JSP页面、Servlet处理请求等。本篇文章将详细探讨Java乱码问题产生的原因及解决方案。 ...

    java获取乱码问题

    ### Java获取乱码问题解析与解决方案 在Java应用开发过程中,字符编码问题一直是困扰开发者的一大难题,尤其是在处理HTTP请求中的中文或特殊字符时,经常会出现乱码现象。本文将详细介绍如何通过修改`server.xml`...

    Java关于中文乱码问题的多种解决方法

    在Java编程中,中文乱码问题是一个常见的困扰,尤其是在处理文件读写、网络传输或数据库操作时。本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中...

    java中文乱码解决问题

    JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...

    java中文乱码问题解决

    "Java中文乱码问题解决" Java中文乱码问题是Java开发中常见的问题,尤其是在Web开发中,乱码问题会导致页面显示混乱,影响用户体验。解决乱码问题需要了解编码的基本原理和各种编码格式的区别。 编码的原因可以...

    关于java解决乱码问题的一些想法

    解决Java乱码问题通常有以下几种方法: 1. 文件读写时指定编码:使用`FileReader`和`FileWriter`时,可以通过传递`Charset`对象来指定编码。例如: ```java FileReader reader = new FileReader("file.txt", ...

Global site tag (gtag.js) - Google Analytics