首页 > 编程知识 正文

java编译中文乱码,java配置文件中文乱码

时间:2023-05-03 15:05:49 阅读:171540 作者:87

JAVA中文乱码解决

简单地叙述

乱码是JAVA开发时经常出现的问题。 主要发生在四种情况下。

1.

系统接口之间

2.

POST提交数据

3.

获取提交数据和URL路径

4.

页面乱码

系统界面之间的乱码

双方需要定义编码方案。 例如,GBK (以下,都以GBK为例。

发送时将String按GBK转换为字节码

out.write(loginstr.get(0).getbytes ) ' gbk ' ); //out是输出流

接收时用GBK码将字节码转换为String

newstring(by,0,a,' GBK ' ); //by是字节码,a是字节码长

开机自检乱码

通常由Filter设定字符集。 开发者不需要在意。

request.setcharacterencoding (gbk );

在特殊情况下,每个servlet也可以根据上述代码进行设置。

但是,请注意,必须在获取第一个参数之前进行设置。

另外,其他的

(1) ) ) )。

在上面的代码中,只能设置post提交的request

body编码,而不是设置get方法发送的queryString的编码。 该方法告诉APP应用服务器应该用什么编码来分析从post发送的内容。

(2) ) ) )。

HttpServletRequest.getPathInfo ()返回的结果已由servlet服务器解码。

(3) ) )。

从htpservletrequest.getrequest uri ()返回的字符串没有传递到servlet服务器decoded。

(4) ) )。

POST提交的数据是请求主体的一部分。

(5) ) )。

在网页的Http标头中添加contenttype('text/html;

charset=GBK ' )的作用:

(a ) ) )。

传达浏览器网页的数据是什么样的代码;

(b ) ) )。

提交表单时,浏览器通常会根据ContentType指定的charset对表单中的数据进行编码,然后将其提交给服务器。

(c ) ) )。

此处的ContentType是http标头的ContentType,而不是网页元的ContentType。

GET乱码和URL路径乱码

URL路径的乱码是指使用中文路径,如…/中文路径/test.jsp

GET乱码需要在半成品的配置文件中设定。

(1) tomcat服务器

对于tomcat服务器,此文件为server.xml

port=' 8080 '协议=' http/1.1 '

maxThreads='150 '

连接时间out=' 20000 '

redirect port=' 8443 ' uri encoding=' gbk ' /

URIEncoding告诉服务器servlet在解码URL时使用的编码。

port=' 8080 ' . usebodyencodingforuri=' true '

/

useBodyEncodingForURI告诉服务器在解码URL时需要使用request body指定的编码。

)2) weblogic服务器

对于weblogic服务器,该文件为weblogic.xml

世界棒球经典赛

另外:

不同的浏览器会根据URLEncode自动编码以GET格式提交的中文和路径中文。

(1) ) ) )。

对于中文IE,如果在“高级选项”中选择了“始终通过UTF-8发送”,则PathInfo为URL

Encode以UTF-8编码,QueryString以GBK编码。

3358 localhost :8080/example /中国? name=中国

实际提交如下

GET /example/$E4$B8$AD$E5$9B$BD? name=$D6$D0$B9$FA

将$更改为% )

(2) ) ) )。

对于中文IE,如果在高级选项中取消通过UTF-8发送,PathInfo和QueryString将为URL

encode根据GBK进行编码。

实际提交如下

获取

/example/$D6$D0$B9$FA? name=$D6$D0$B9$fa($ (将$更改为% () ) ) ) ) ) )。

(3) ) )。

在中文firefox中,pathInfo和查询字符串都是URL

encode根据GBK进行编码。 实际提交如下

获取

/example/$D6$D0$B9$FA? name=$D6$D0$B9$fa($ (将$更改为% () ) ) ) ) ) )。

很明显,不同浏览器和同一浏览器的不同设置会影响最终URL的PathInfo编码。 对于中文IE和FIREFOX,都使用GBK代码对query字符串进行编码。

因此,一般情况下,尽量使用英语路径,而不是中文路径。 如果提交方法应尽可能使用POST,并且需要使用GET方法,请根据配置文件中的编码对PathInfo和QueryString进行URLEncode。 也就是说,直接转换为类型为$D6$D0$B9$FA的数据。

页面乱码

浏览器使用http标头中的contenttype('text/html;

charset=GBK ' )是指定用于对从服务器发送的字节流进行解码的字符集。

1.

在servlet中调用

http servlet response.set contenttype ()设置http标头的content type。

2.

Jsp:

contentType='text/html; charset=GBK'%

3.

注意: http servlet response.set content type (' text/XML; charset=GBK '; 请务必写在PrintWriter out=中=

HttpServletResponse.getWriter (之前。 否则会乱码。 以前在项目开发过程中遇到过这样的问题,尤其是在使用Ajax时

总结

1.

通常,系统只使用一个字符集以避免混乱。

2.

文件、配置文件和JSP中的

contentType='text/html; charset=GBK'%都必须写。

3.

一般路径请不要写中文。 请不要使用中文get方法(QueryString )。 如果需要在特殊情况下使用,请积极使用URLEncode。

4.

在接口通信的情况下,双方积极地定义匹配的字符集,将每个字符集转换为字节码进行交流。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。