1 0

老问题,中文乱码10

环境编码都是utf-8,jsp页面,struts2,tomcat的URIEncoding都是utf-8.
实际上他们工作得也很好,表单的get和post提交都没乱码,但是如果我直接在地址栏里加入中文参数来访问就会有乱码,我试了下直接在<a>里放入中文,然后点击这个链接,并没有乱码,就是在地址栏里输入中文访问就会出乱码。

new String这种方式也试过了,还是不行,请高人帮助,谢谢!!!
2012年12月27日 09:25

11个答案 按时间排序 按投票排序

1 0

你提交的时候,如果通过表单提交,浏览器会自动替你进行参数的转码,而直接通过地址栏提交,浏览器就不会进行转码,传递到后台当然会乱码。

2012年12月27日 09:32
0 0

在server.xml
<Connector URIEncoding="UTF8" useBodyEncodingForURI="true" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
就可以了。加useBodyEncodingForURI="true"属性。

地址栏上就不会出现乱码了,具体原因:
Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则需要在server.xml的Connector节点增加useBodyEncodingForURI="true" 属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="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获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。

2012年12月29日 11:51
0 0

(1)<a>的方式提交中文的请求会被浏览器编码,编码方式决定于对当前html页面的编码设置,默认是jsp里设置的responce的encoding、或者filter里对response进行的设置。也可以设置<meta>来指定,请求提交到tomcat之后,由tomcat的URIEncoding进行了解码;
(2)表单提交方式编码过程和<a>方式一致,不过可以通过对表单设置编码方式来改变,请求提交到servlet之前通过filter或者各种拦截器设置Encoding来确定解码方式;
(3)根据你的配置:【环境编码都是utf-8,jsp页面,struts2,tomcat的URIEncoding都是utf-8】,(1),(2)没有问题了,在地址栏输入的中文可能就和客户端浏览器有关了,这个估计你做的应用也不能要求用户改变浏览器的设置,所以考虑以下一下两种方案:
1.转码:这个得弄清楚浏览器的url的编码方式,才能和utf-8进行转码
2.能不能通过js自动设置浏览器直接输入url时候的编码方式?(这个纯属个人想法)

2012年12月28日 13:06
0 0

你打开我的电脑-高级-环境变量-系统变量 设置一下
变量名:JAVA_TOOL_OPTIONS
变量值:-Dfile.encoding=UTF-8
设置后电脑需要重启才能生效
变量值可根据你的编码改变你计算机的根本编码格式

2012年12月28日 09:24
0 0

用GET方式传参数,最好对中文进行URL编码

2012年12月27日 20:22
0 0

你保存的文件是不是utf8格式?

2012年12月27日 15:38
0 0

1、地址栏上面的地址有一定规范的:URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。如果URL中有汉字,就必须编码后使用。但是麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。所以不同浏览器对地址栏上面的中文编码不同

2、“<a>里放入中文,然后点击这个链接,并没有乱码” 这个是在页面里面的,页面里面编码通过<meta>来告诉浏览器了,浏览器知道用户使用神马编码的了

详情请查看:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

2012年12月27日 14:16
0 0

在浏览器直接输入汉字,采用get方法提交,get方法仅支持ASCII字符.

当你在表单或者<a>中使用汉字时,get提交的时候会把汉字转成 '%A0'这种形式,即百分号+两个十六进制数的形式。

直接在<a>里放入中文,然后点击这个链接,你可以观察一下地址栏,看是否是上面所说的这种形式。

如果是上面所说的那样,那你可以在ie->工具->internet选项->高级->勾选发送UTF-8 URL试试。

2012年12月27日 11:31
0 0

如果将中文放在a标签中,先将中文转换成UTF-8的格式,然后放在url中。后台再解码!

2012年12月27日 10:38
0 1

如果你能控制什么时候是地址栏输入的话,可以使用request.getQueryString()方法获取到参数串,对字符串进行解析,获得参数值。获得值后先判断一下是否汉字,如果不是汉字,按UTF-8进行转码
url:xxx.action?a=一

action中

String str = request.getQueryString();
String val = getRequest().getQueryString().replaceAll("a=([^&]+).*", "$1");
//经实际测试,此时val=%E4%B8%80
if(val!=null&&val.indexOf("%")>=0){
    val=URLDecoder.decode(val,"UTF-8");
}
System.out.println(val);//此时打印内容为:    一

2012年12月27日 11:23
0 1

找到tomcat中的server.xml文件,搜索 port="8080" 会找到
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

改成
<Connector URIEncoding="UTF8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
就可以了。加了 URIEncoding="UTF8"属性。

2012年12月27日 10:38

相关推荐

    Drozer中文乱码解决办法.docx

    2. 中文乱码问题可能会出现在 Drozer 中,并且可以通过修改配置文件来解决。 3. Python 的默认编码可以通过 `sys.setdefaultencoding()` 函数来设置。 4. UTF-8 是一种常用的 Unicode 编码方式,用于解决中文乱码的...

    java中文乱码问题处理方案.docx

    "java中文乱码问题处理方案" java 中文乱码问题处理方案是 java 开发者经常遇到的问题之一。这个问题的存在是由于 java 系统的中文问题原理没有被正确地理解和解决。只有当我们了解了 java 系统的中文问题原理,...

    连接到linux系统,SSH,telnet终端中文显示乱码

    ### 连接到Linux系统,SSH、Telnet终端中文显示乱码解决方案 在处理与Linux系统的远程连接时,用户经常会遇到中文字符显示为乱码的问题...希望本文能帮助您顺利解决中文乱码问题,提升远程管理Linux系统的效率和体验。

    二维码生成工具QRCode源代码支持中文(解决解码时中文乱码)

    QRCode源代码的提供,意味着开发者可以自行构建和定制二维码生成和解码功能,特别是在处理中文字符时避免乱码问题,这是该资源的核心价值所在。 ThoughtWorks是一家知名的全球软件咨询公司,其提供的QRCode库可能是...

    javaScript encodeURI中文乱码

    ### JavaScript encodeURI中文乱码问题解析与解决方案 在Web开发中,处理中文字符或其它非ASCII字符时,经常遇到的问题之一就是编码问题,特别是在URL处理过程中。JavaScript中的`encodeURI()`函数是用于对URL进行...

    中文乱码整理

    通过以上介绍,我们可以更好地理解和解决中文乱码问题。在处理中文字符时,保持对编码的敏感和严谨,遵循编码规范,就能大大降低乱码的出现。同时,了解并熟练运用各种工具和编程技巧,可以更高效地处理乱码问题,...

    MagicAjax解决中文乱码.

    在IT行业中,中文乱码问题是一个常见的困扰,尤其是在进行Web开发时。MagicAjax是一个JavaScript库,主要用于增强网页的Ajax交互功能,使其更加便捷和高效。然而,当涉及到跨平台、跨浏览器的数据传输时,中文字符...

    IE 浏览器在get请求下中文乱码的问题.zip

    中文乱码问题的核心在于字符编码不一致。字符编码决定了计算机如何存储和显示文本。在Web开发中,常见的字符编码有GBK、UTF-8等。GBK是GB2312的扩展,主要在中国大陆使用,支持大部分简体中文;UTF-8是一种国际通用...

    Java开发Client客户端,连接Windows的Telnet服务器,解决了中文乱码问题

    本文将详细探讨如何使用Java开发这样的客户端,并解决在处理中文字符时可能出现的乱码问题。 首先,让我们了解Java中的Socket编程。在Java中,`java.net.Socket`类提供了TCP/IP套接字功能,可以用于建立客户端到...

    解压文件时中文乱码

    在处理压缩文件,如ZIP或RAR格式时,中文文件名可能会出现乱码问题,这通常是由于编码不兼容或缺少正确设置编码导致的。中文字符在不同的操作系统或软件中可能使用不同的编码方式,如GBK、UTF-8等,不匹配就会产生...

    mysql中文乱码的解决方法

    针对以上问题,本文将详细介绍如何彻底解决MySQL中的中文乱码问题,并推荐使用`utf8`或`utf8mb4`字符集,因为它们能兼容世界上绝大多数字符。 #### 二、解决步骤 ##### 步骤一:配置my.ini文件 1. **定位my.ini...

    日文乱码转换工具

    4. **应用范围**:除了日文游戏,Locale Emulator也可以用于处理其他语言的乱码问题,尤其是那些对区域设置敏感的软件,例如一些旧版的日文软件或游戏,或者某些需要特定语言环境运行的国际软件。 5. **安装与使用*...

    Serv-U完美解决中日韩文件(夹)名显示乱码

    标题“Serv-U完美解决中日韩文件(夹)名显示乱码”和描述指出的问题,是针对FTP服务器软件Serv-U在处理非英文字符(特别是中日韩字符)时可能出现的乱码问题。本文将详细探讨这个问题,并提供解决方案。 Serv-U是一...

    smartUpload上传文件包修改后解决中文乱码

    然而,当处理包含中文字符的文件名时,可能会遇到乱码问题,这主要涉及到字符编码的处理。本文将深入探讨SmartUpload上传文件时如何解决中文乱码的问题。 首先,我们要理解乱码产生的原因。在计算机系统中,不同的...

    路由器I交换机出现乱码

    路由器I交换机出现乱码是一个常见的问题,当我们使用USB转串口连接路由器时,可能会出现乱码的现象。这种情况下,我们需要了解USB转串口的配置和设置,以确保路由器的正常工作。 首先,我们需要了解USB转串口的工作...

    struts2文件下载(解决了中文乱码问题)

    在处理文件下载时,Struts2提供了一套完整的解决方案,包括处理中文文件名的乱码问题。在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行...

    MyEclipse中文乱码问题简单解决方案,不需任何编码转化

    然而,在一些老旧的系统中,中文字符可能会使用 GBK 或 GB2312 编码,这会导致乱码问题的出现。例如,在 MyEclipse 中,如果使用了 GBK 或 GB2312 编码,中文字符可能会显示为乱码。 为了解决中文乱码问题,我们...

    南极星乱码转换器(简体/繁体/日文/韩文乱码转换工具)FOR WINDOWS9X

    南极星乱码转换器是一款专为Windows 9X操作系统设计的软件,主要用于处理在使用不同语言文字时出现的乱码问题。这款工具尤其对简体、繁体、日文和韩文之间的乱码转换有着显著的效果,使得用户在运行这些语言的游戏...

    安装WAS7.0时出现乱码问题

    在Linux环境下安装WebSphere Application Server (WAS) 7.0时,遇到中文乱码问题是一种常见的技术挑战,尤其是在非UTF-8编码的系统或终端上。这个问题主要体现在安装界面或者日志输出中,导致阅读困难,可能影响到...

    解决gb2312编码导致乱码问题

    标题提到的“解决gb2312编码导致乱码问题”是一个典型的字符编码问题,它涉及到如何在不同的编码格式之间正确转换,以确保中文字符在传输和显示时的正确性。gb2312是一种较老的中文字符编码标准,主要用于简体中文,...

Global site tag (gtag.js) - Google Analytics