Eclipse项目中乱码问题的解决办法

摘要:
乱码的根本原因:就是编码和解码指定的字符集不一致造成的!

一、产生的原因:

1、Http协议进行通信的时候是基于请求和响应的,传输的内容我们称之为报文!

2、Http协议会按照一定的规则将报文编码,然后在读取的时候再使用响应的解码格式进行解码!

3、这个一定的规则指的就是字符集:ASCII,iso8859-1,gbk,gb2312,utf-8

4、编码:将字符按照字符集转化为二进制格式

5、解码:将二进制代码按照响应的字符集转化为字符!

乱码的根本原因:就是编码和解码指定的字符集不一致造成的!

二、字符集:

1、ASCII字符集:美国信息交换标准代码,,单字节编码,主要用于显示现代英语

2、ISO8859-1字符集:单字节编码,ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号

3、GB2312字符集:中国国家标准简体中文字符集,收录常用汉字

4、GBK字符集:汉字内码扩展规范,向下兼容GB2312,兼容Unicode 编码,GBK是采用单双字节变长编码

5、UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码,用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

三、解决办法:

1、请求报文:
浏览器编码---------->服务器解码

浏览器是按照给定页面的编码格式进行编码的,所以只需要设置网页的编码格式为utf-8就可以了!
get请求

解码:使用的是tomcat默认的解码格式,默认是iso8859-1;

针对Get方式的乱码问题,由于参数是通过URL传递的,所以通过request设置的编码格式是不起作用的,此时可以在每次发生请求之前对URL进行编码:

例如:Location.href="http://t.zoukankan.com/encodeURI"("http://localhost/test/s?name=中文&sex=女");

更简便的方法,那就是在服务器端配置URL编码格式:

我们在server.xml文件中设置:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
post请求

解码:使用的是tomcat默认的解码格式,默认是iso8859-1;

在服务器端我们使用的是:req.setCharacterEncoding("utf-8");来设置解码格式

注意:req.setCharacterEncoding("utf-8")一定要设置在第一次获取请求参数之前!
2、响应编码
服务器编码------------->浏览器解码

1)第一种解决方案:

resp.setCharacterEncoding("utf-8");

resp.setHeader("Content-Type", "text/html;charset=utf-8");

2)第二种解决方案:

resp.setHeader("Content-Type", "text/html;charset=utf-8");

3)第三种方案:

resp.setContentType("text/html;charset=utf-8");

Content-Type
用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
CharacterEncoding
作用是设置对客户端请求进行重新编码的编码
也就是说一个是设置读,一个是设置取

免责声明:文章转载自《Eclipse项目中乱码问题的解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# Excel导入导出【随笔】手机QQ v4.0下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Javascript中的url编码与解码(详解)

摘要 本文主要针对URI编解码的相关问题做了介绍,对url编码中哪些字符需要编码、为什么需要编码做了详细的说明,并对比分析了Javascript中和编解码相关的几对函数escape / unescape,encodeURI / decodeURI和encodeURIComponent / decodeURIComponent。 预备知识    foo://...

Stata—变量的存储类型和显示格式

1.变量的存储类型 清楚变量的取值区间后设定数据存储的类型,可以降低Stata内存容量。 ①整数的存储类型 Byte,字节型,取值±100 Int,一般整数型,取值±32000 Long,长整数型,取值±2.14*10^10 ②小数的存储类型 Float,浮点型,8位有效数字,是Stata默认的存储类型 Double,双精度,16位有效数字 ③字符型变量...

编一程序,将两个字符串连接起来,不要用strcat函数

编一程序,将两个字符串连接起来,不要用strcat函数 【答案解析】 直接将s2中的字符逐个拷贝到s1的末尾即可,用户需要保证s1中能存的下s2中的字符 获取s1末尾的位置 将s2中的字符逐个拷贝到s1中 【代码实现】 #include<stdio.h> int main() { char s1[100] = {0}; char s2...

电子邮件的正则表达式

看似是电子邮件的正则表达式之一w+([- +.]w)*@w+([-.]w+)*.w+([-.]w+)*或者S+@S+.S+都是常用的电子邮件正则表达式RegularExpressionValidator就不用解释了,基础控件,验证输入是否符合[…...] 匹配括号中任何一字符[^…...] 匹配不在括号中的任何一字符w 匹配(a~z,A~Z,0~9)W 匹...

解决PHP json_encode() 编码字符中包含<>时,转化为\u003E\u003C

一、PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES php格式化json的函数 json_encode($value,$options) 其中有2个比较常用到的参数 JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256) J...

批量去除Teleport Pro整站下载文件冗余代码

teleport pro tppabs标签批量删除 teleport pro tppabs标签批量删除 使 用Teleport Pro下载的网页代码中包含了很多垃圾代码,比如下载的html网页代码中会出现tppabs标签,而且还会将所有的href标签中加入了很多垃圾代码, 在css会加入了tpa标签,这些都是冗余代码,可以将其全部删除,但是由于代码太多,...