
1. 最基本的乱码问题.
这个乱码问题是最简单的乱码问题. 通常会出现新的. 这是由于页面编码不一致导致的乱码.
<%@页面语言=“ java” pageEncoding =“ UTF-8”%>
<%@页面contentType =“ text / html; charset = iso8859-1”%>
head>
head>

我是一个好人
body>
html>
代码在三个地方.
第一位的编码格式是jsp文件的存储格式. Ecljpse将根据此编码格式保存文件. 并编译包含内部汉字的jsp文件.
第二位被编码为解码格式. 因为保存为UTF-8的文件被解码为iso8859-1,所以如果使用中文,则会出现乱码. 它必须是一致的. 第二行不是必需的. 缺省值为使用iso8859-1编码格式. 因此,如果没有这句话,“我是一个好人”也将出现乱码. 必须一致.
第三位是控制浏览器的解码方法. 如果先前的解码是一致且正确的,则此编码格式无关紧要. 某些网页出现乱码,因为浏览器无法确定要使用的编码格式. 由于页面有时嵌入在页面中,因此浏览器会混淆编码格式. 有乱码.
2. 通过Post方法提交表单后收到的乱码问题
此问题也是常见问题. 此乱码也是tomcat的内部编码格式iso8859-1,这意味着在提交帖子时,如果未设置提交的编码格式,则它将以iso8859-1模式提交,但是utf会接受可接受的jsp -8. 乱码. 因此,有几种解决方案和比较.
A. 接受参数时进行编码转换
String str = new String(request.getParameter(“ something”). getBytes(“ ISO-8859-1”),“ utf-8”);在这种情况下,必须像这样对每个参数进行转码. 很麻烦但是,确实有可能获得汉字.

B. 在请求页面的开头,执行请求的编码代码request.setCharacterEncoding(“ UTF-8”),并将提交内容的字符集设置为UTF-8. 在这种情况下,接受此参数的页面不必进行代码转换. 直接使用
String str = request.getParameter(“ something”);您可以获取汉字参数. 但是每个页面都需要执行这句话. 此方法也对提交后产生影响,并且对于获取提交和上传enctype =“ multipart / form-data”的文件无效. 稍后,将分别解释这两个乱码.
C. 为了避免在每个页面上编写request.setCharacterEncoding(“ UTF-8”),建议对所有jsps使用过滤器
编码. 这个互联网上有很多例子. 请亲自检查.
3. 表单获取提交方法的乱码处理方法.
如果使用get方法提交中文,则接受参数的页面也会出现乱码. 出现此乱码的原因还在于tomcat的内部编码格式iso8859-1. Tomcat将使用默认的get8编码方法iso8859-1对中文字符进行编码,并在编码后附加到url上,从而导致接收页面的参数乱码.
解决方案:
A. 在上面的示例中,使用第一种方法解码接收到的字符,然后对它们进行代码转换.
B,Get获取了URL提交,并且在输入URL之前已对iso8859-1进行了编码. 要影响这种编码,您需要将useBodyEncodingForURI =“ true”添加到server.xml =“ true”的连接器节点
属性配置,可以控制tomcat的汉字编码方法get方法. 以上提交的属性控件也使用request.setCharacterEncoding(“ UTF-8”)设置的编码格式进行编码,因此,自动编码为utf-8,并且可以正常接受接受页面. 但是我认为真正的编码过程是tomcat应该基于
<连接器端口=“ 8080”
maxThreads =“ 150” minSpareThreads =“ 25” maxSpareThreads =“ 75”
enableLookups =“ false” redirectPort =“ 8443” acceptCount =“ 100”
debug =“ 0” connectionTimeout =“ 20000” useBodyEncodingForURI =“ true”
disableUploadTimeout =“ true” URIEncoding =“ UTF-8” />
其中设置的URIEncoding =“ UTF-8”将被再次编码,但是由于它已经被编码为utf-8,因此重新编码不会改变. 如果从url获得编码jsp乱码,则根据URIEncoding =“ UTF-8”对接收页面进行解码.
4. 上载文件时解决乱码
上载文件时,表单表单集enctype =“ multipart / form-data”. 这样,文件以流方式提交. 如果使用apach的上载组件,则会发现很多乱码. 这是因为apach的早期commons-fileupload.jar有一个错误,并且汉字被取出并解码. 由于采用这种提交方式,因此编码会自动使用tomcat默认编码格式iso-8859-1. 但是,出现的乱码是: 句号,逗号和其他特殊符号出现乱码. 如果汉字数为奇数,则会出现乱码,甚至会正常解析偶数.
解决方案: 下载commons-fileupload-1.1.1.jar此版本的jar已解决了这些错误.
但是,提取内容时,仍然需要将提取的字符从iso8859-1转码为utf-8. 已经可以获取所有正常的汉字和汉字了.
5. 有关url请求的Java代码,接受乱码参数
URL的编码格式取决于上面提到的URIEncoding =“ UTF-8”. 如果设置了此编码格式,则意味着必须对url的所有汉字参数进行编码. 否则,获取的汉字参数值全部乱码,例如
一个链接Response.sendDerect(“ /a.jsp?name=张大维”);并直接在a.jsp中使用
字符串名称= request.getParameter(“名称”);结果是字符乱码. 因为必须是utf-8,所以此转弯应这样写:
Response.sendDerect(“ / a.jsp?name = URLEncode.encode(” Zhang Dawei“,” utf-8“);仅.
如果不设置此参数URIEncoding =“ UTF-8”怎么办?如果未设置,则使用默认编码格式iso8859-1. 问题再次出现. 首先是如果参数值的数量是奇数,则可以正常解析. 如果数字为偶数,则最后一个字符为乱码. 另外,如果最后一个字符是英文,则可以正常解析,但中文标点符号仍显示为乱码. 作为权宜之计,如果您的参数中没有中文标点符号,则可以在参数值的末尾添加英文符号以解决乱码问题,然后在获取参数后删除最后一个符号. 也可以一起使用.
6. 有关url请求的脚本代码,收到的参数乱码
该脚本还将控制页面的翻转,并且还将包含其他参数并接受页面来解析此参数. 如果此汉字参数未执行URIEncoding =“ UTF-8”指定的编码过程,则在接收页面上接收到的汉字也会出现乱码. 脚本处理比较麻烦. 您必须具有与编码脚本对应的对应文件,然后在脚本中调用方法以对汉字进行编码.
7. jsp在MyEclipse中打开时出现的乱码
对于现有项目,Jsp文件的存储格式可能为utf-8. 如果是新安装的Eclipse,则默认使用的编码格式为iso8859-1. 因此,jsp中的汉字出现乱码. 这种乱码比较容易解决. 直接转到eclipse3.1的首选项,找到general-> edidor并将其设置为utf-8进行文件打开编码. Eclipse将自动以新的编码格式重新打开. 汉字可以正常显示.
8. 在Eclipse中打开时html页面出现乱码
由于大多数页面是由Dreamweaver制作的,因此存储格式与Eclipse识别不同.
通常,在这种情况下jsp乱码,请在eclipse中创建一个新的jsp,直接从Dreamweaver复制页面内容并将其粘贴到jsp中.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-228748-1.html
我们的军队好久没打仗了