tomcat默认全部都是用ISO-8859-1编码,不管你页面用什么显示,Tomcat最终还是会替你将所有字符转做ISO-8859-1.那么,当在另目标页面再用GBK翻译时就会将本来错的编码翻译成GBK的编码,这时的文字会乱码.
所以需要先将得到"字符"(不管是什么)都先用字节数组表示,且使用ISO-8859-1进行翻译,得到一个在ISO-8859-1编码环境下的字节数组.例如:AB表示成[64,65].然后再用GBK编码这个数组,并翻译成一个字符串.
那么我们可以得到一个编码转换的过程
假设:GBK码("你")->URLencode后变成->(%3F%2F)->Tomcat自动替你转一次ISO-8859-1->得到( 23 43 68 23 42 68 每一个符号表示为ISO-8859-1中的一个编码)->接收页面--->再转一次为ISO-8859-1的Byte数组[23,43,68,23,42,68]--->用GBK再转为可读的文字--->(%3F%2F"---->转为("你")
除了UTF-16,其它字符集定义时都重复。
比如汉字“我”,假设它的值是22530(只是假设,具体多少我没查)
而日文的“マ”的值也可能是22530(也是假设)或韩文的“?”
在网络上传输是不能以高字节传输,因为网络底层最后只认无符号char,相当于java中的byte,所以
22530这个int要转换为字节数组,
byte[0] = (22530 >>

&0xFF;
byte[1] = 22530 &0xFF;
具体多少我没算,假设是byte[125,231]
这样的字节传到服务端到是表示汉字“我”还是日文的“マ”还是其它狗屁?
一般通讯协议中会告诉对字符集,比如HTTP在请求时告诉服务端:
ContentType="xxxxxxxxxx";charset="GKB";
这时服务端就知道现在接收到的[125,231]是GKB的“我”而不是其它文字。
上面是标准的通信过程。但如果有些水平很差的程序员在提交请求时没有通知服务端字符集,那服务端就没办法了。
只好按最常用的字符集来猜一个默认的。
这还不错,最要命的是写服务器的程序员水平和见识很差时,就要命了。就象写老版本的TOMCAT的程序员,他自己生在西方,以为全世界所有人都用的是26个字母加一些符号,所以他不管客户端提交什么都按ISO-8859-1来算,结果可想而知。
没办法,谁让我们用GBK的人不会写tomcat呢,只好先把让那个差劲的程序员错误生成的String用ISO-8859-1还原成
[125,231],再重新用GKB生成String.
用于得到服务器传来的字符重新生成GBK编码
分享到:
相关推荐
总的来说,解决Ajax乱码问题的关键在于理解字符编码的工作原理,确保数据在整个传输过程中的编码与解码一致性,以及正确设置服务器和客户端的编码设置。在实际应用中,还应考虑跨平台和跨浏览器的兼容性,以确保解决...
总之,解决Java中的URL中文乱码问题需要理解URL编码的原理,并在客户端和服务器端采取相应的措施,确保编码和解码的一致性。无论是通过JavaScript编码、Java服务器端解码,还是调整服务器配置,关键在于确保字符集的...
根据给定的信息,本文将详细解释四种常见的网页乱码解决方案,并着重分析其原理与实践方法。这四个场景分别是:JSP页面显示乱码、表单提交中文时出现乱码、数据库连接出现乱码以及数据库显示乱码的问题。这些解决...
### jsp解决乱码方法总结 在Web开发中,尤其是使用Java Server Pages(JSP)进行页面渲染时,经常会遇到字符编码的问题,也就是所谓的“乱码”现象。这些问题如果处理不当,将严重影响用户体验以及数据的正确性。...
在解决乱码问题之前,我们需要先了解一些基本的概念: 1. **字符编码**:字符编码是计算机表示和存储文本的方式,常见的有ASCII、GBK、UTF-8等。 2. **字符集**:字符集是一组字符的集合,不同的字符集可以包含不同...
本项目名为“压缩工具类改良版(解决中文乱码)”,它专注于解决使用`ZipEntry`进行文件压缩时遇到的中文乱码问题。这个问题通常是由于字符编码不兼容导致的,特别是当默认编码与文件或系统使用的编码不一致时。这里...
总的来说,解决Java项目中的中文乱码问题需要理解编码与解码的基本原理,合理地设置字符编码,并在必要时进行手动转换。在开发过程中,应尽量保持统一的编码标准,避免在不同环节出现不一致导致的乱码问题。此外,...
在开发基于JSP的Web应用时,乱码问题常常困扰着开发者。本文将详细解析JSP中可能出现的四种乱码情况...理解这些编码的原理和相互关系,可以有效地避免和解决乱码问题,确保中文数据在Web应用中能够正确地展示和存储。
在Java开发过程中,中文乱码...理解字符编码的工作原理,以及如何在Java中操作字符编码,对于避免和解决乱码问题至关重要。在实际项目开发中,养成良好的编码习惯,如始终使用UTF-8编码,可以显著减少乱码问题的出现。
本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、基本原理与步骤 1. **读取文件**:首先需要将要下载的文件读取到内存中。 2. **设置响应头**:为了正确地告知...
针对描述中提到的"ireport中文乱码引入的jar",这很可能是解决乱码问题所需的特定JAR文件。这个文件可能包含了支持中文的字体或者编码处理的相关类。你需要将这个JAR添加到iReport的类路径中,具体步骤如下: 1. ...
### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...
总的来说,乱码问题通常源于编码和解码过程中的不匹配,理解字符编码的基本原理,并在编程实践中始终保持字符集的一致性,是解决这类问题的关键。同时,使用现代的编程工具和框架,它们往往提供了更好的字符编码支持...
### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...
了解字符集和编码原理,以及它们在不同环境中的应用,是解决乱码问题的关键。在开发过程中,保持一致性是防止乱码的最好策略,包括数据库配置、JSP页面、HTTP请求和响应、文件存储等方面。当涉及到跨平台或国际化...
在开发Java Web应用程序时,JSP(JavaServer Pages)是...通过深入理解字符编码和Web应用的工作原理,开发者能更好地应对JSP乱码问题,提高用户体验。对于更复杂的情况,建议参考相关文档,或寻求专业开发人员的帮助。
在IT领域,尤其是在Web开发中,乱码问题是一个常见的困扰,尤其对于处理中文字符时更为突出。乱码的出现通常是由于编码与...记住,解决乱码的关键在于确保编码与解码的统一和对应,特别是在数据的传输和存储过程中。
本篇文章将详细介绍如何使用Volley来创建一个显示中文内容的List列表,并解决中文乱码的问题。 首先,我们需要理解Volley的工作原理。Volley通过异步方式发送网络请求,它内部维护了一个线程池来处理这些请求,同时...
本文将深入探讨如何使用C#语言解决中文乱码问题,将乱码文本正确转换为可读的中文。 ### 核心知识点:字符编码与转换 #### 1. 字符编码概念 字符编码是计算机用于存储、传输和显示文字的一套规则,它将字符映射到...
在Struts1中,我们通常会通过自定义Filter来处理请求的编码问题,但在Struts2中,由于其自身的过滤器机制,单纯依赖Filter可能无法有效地解决乱码问题。本文将详细介绍如何使用Struts2的拦截器(Interceptor)来解决...