jsp文件调用js时,js文件中文字乱码
- 格式:docx
- 大小:11.79 KB
- 文档页数:1
万方数据《电子设计工程》2011年第1期转换的规律。
3)缩程所用的软件工具的字符编码开发JSP文件时,1)iS08859一l编码通常叫做htin一1,属于单字节编码.最多能表示的字符范围是0~255.应用于英文系列。
IS08859一l编码表示的字符范围很窄,无法表示中文字符。
但是.由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍IH使用IS08859一l编码来表示。
而且在很多协议上.默认使用该编码。
2)GB2312/GBK编码这就是汉字的国标码,专门用来表示汉字.是双字节编码其中GBK编码能够用来同时表示繁体字和简体字,而GB2312只能表示简体字,GBK是兼容GB2312编码的。
3)Unicode编码这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。
但是它是不兼容IS08859一l编码的,也不兼容任何编码。
4)UTF一8编码UTF一8编码兼容IS08859一l编码.兼容Unicode编码。
兼容同时也可以用来表示所有语言的字符.不过。
UTF-8编码是不定长编码,每一个字符的长度从l~6个字节不等。
另外,UTF一8编码自带简单的校验功能。
一般来讲。
英文字母都是用一个字节表示,而汉字使用3个字节。
从以上的所述13I可以知道。
当网贞上仅有英文字符时。
可以选用IS08859一l编码。
网贞141上一旦有汉字时,字符的编码必须为GB2312/GBK编码.Unicode编码或UrⅡ、_8编码。
特别值得一提的是。
UTF一8编码还与其他编码兼容。
使用这种编码.就不会出现乱码。
2影响JSP文件中字符编码的外部因素在JSP动态网页开发过程中.所谓的影响JSP文件巾字符编码的外部因素,是指运行其他软件的最低层软件——操作系统。
建立JSP文件时所用的软件,以及显示JSP文件的工具对汉字编码的影响151。
具体地说就是操作系统、测览器、编程所用的软件T具。
每个软件都有自己默认支持的字符编码。
jsp乱码问题及其解决办法jsp乱码问题及其解决办法2019年04月09日星期五下午05:32困扰已久的乱码问题终于得到解决,希望下次出现更多问题,解决问题的过程很愉快!关于jsp乱码问题的解决2009-01-22 21:32关于jsp乱码问题的解决。
1最基本的乱码问题。
这个乱码问题是最简单的乱码问题。
一般新会出现。
就是页面编码不一致导致的乱码。
%@page language="java"pageEncoding="UTF-8"%%@page contentType="text/html;charset=gb2312"%html head title中文问题/title meta http-equiv="Content-Type"content="text/html;charset=UTF-8"/head/head body我是个好人/body/html三个地方的编码。
第一个地方的编码格式为jsp文件的存储格式。
Eclipse会根据这个编码格式保存文件。
并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。
因为存为UTF-8的文件被解码为iso8859-1,这样如有中文肯定出乱码。
也就是必须一致。
而第二处所在的这一行,可以没有。
缺省也是使用iso8859-1的编码格式。
所以如果没有这一行的话,"我是个好人"也会出现乱码。
必须一致才可以。
第三处编码为控制浏览器的解码方式。
如果前面的解码都一致并且无误的话,这个编码格式没有关系。
有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。
因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。
出现了乱码。
2表单使用Post方式提交后接收到的乱码问题这个问题也是一个常见的问题。
这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受。
在java编程中,经常会碰到汉字的处理及显示问题,一不小心就会产生一大堆乱码或问号,这也是让许多初学者手足无措的讨厌问题。
造成这种问题的根本原因是java中默认的编码方式是Unicode,而中国人通常使用的文件和DB都是基于GB2312或者big5等编码,固会出现此问题。
对于中文问题,不同的jdk版本,不同的应用服务器,处理方法都会有一些微小的差异。
在这里,主要针对Tomcat中JSP开发容易出现的中文乱码问题进行讨论,当然,大多数解决方法是通用的。
一般有以下几种情况:1、JSP输出中文的乱码问题所谓在JSP输出中文,即直接在JSP中输出中文,或者给变量赋中文值再输出等,这种情况下的乱码问题往往是因为没有给JSP页面制定显示字符的编码方式,解决方法如下:(1)在JSP页面头部加上语句<% @ page contentType=”text/html;charset=utf-8”%>(在servlet 中使用httpServletResponse.setContentType(“text/html; charset=utf-8”)),最好同时在JSP页面的head部分加上<meta http-equiv=”Content-Type”content=”text/html;charset=utf-8”>。
(2)在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方法:<%String str = “中文”;Byte[] tmpbyte = str.getBytes(“ISO8859_1”);str = new String(tmpbyte);out.print(str);2、获取表单提交的数据时的中文乱码问题在没有加任何其他处理之前,用request.getParameter(“paramName”)获取表单提交中的数据,且表单数据中含有中文时,返回的字符串会呈现乱码。
如何解决JSP中文乱码的问题一、Java中文问题的由来Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。
原因主要有两方面,Java和JSP 文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
首先Java (包括JSP)源文件中很可能包含有中文,而Java和JSP 源文件的保存方式是基于字节流的,如果Java和JSP编译成class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。
基于这种乱码,建议在Java 文件中尽量不要写中文(注释部分不参与编译写中文没关系)如果必须写的话尽量手动带参数-ecoding GBK或-ecoding gb2312编译对于JSP在文件头加上<%@ page contentType=text/html;charset=GBK%:^<%@ page contentType=text/html;charset=gb2312%>基本上就能解决这类乱码问题。
二、常见的解决方式1,最基本的乱码问题。
这个乱码问题是最简单的乱码问题。
一般新会出现。
就是页面编码不一致导致的乱码。
<%@ page language=java pageEncoding=UTF-8%><%@ page contentType=text/html;charset=iso8859-1%><head><title> 中文问题</Mtle><meta http-equiv=Content-Type content=text/html;charset=UTF-8></head></head><body>我是个好人</body></html>三个地方的编码。
第一个地方的编码格式为jsp文件的存储格式。
JSP中文乱码问题解决方案中文乱码就是因为编码不符,可能出现乱码有四个地方:1 JSP编码乱码2 HTML编码乱码3 request获取数据乱码4 response输出信息乱码5 Cookie导致的编码问题下面将会对上面几种情况进行介绍:1 JSP乱码这种是最常见的,设置编码的位置位于JSP的第一行,如果在Eclipse中新建一个JSP默认是下面这种:<%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageE ncoding="ISO-8859-1"%>可以看到它默认的页面编码和传输编码都是ISO-8859-1,这是用于欧洲国家的编码。
可以通过设置Eclipse中JSP的编码格式,来修改默认生成的编码格式。
如果想要支持中文,可以使用UTF-8、GB2312、GBK等,其中UTF-8是国际化的,哪个国家的都支持,所以推荐使用这个。
再来说说上面涉及到编码的两个地方:charset 和pageEncodingcharset是指服务器发往客户端展现时的编码;pageEncoding用于设置JSP页面本身的编码。
JSP在部署后提供给用户使用,会经过三个阶段:(1)JSP生成java文件:这个阶段会使用pageEncoding所定义的编码格式进行转换(2)java文件生成class文件:这个阶段由服务器tomcat自动使用utf -8编码把java文件转换成字节码class文件(3)通过读取class文件展现给用户:这个阶段由tomcat服务器获取字节码内容,通过使用contentType所定义的编码格式展现给用户。
大致过程如下图:这样设置好JSP中的第一行代码,就可以保证基本的JSP展现没有乱码了!<%@ page language="java"contentType="text/html; charset=UTF-8"pageEncodi ng="UTF-8"%>2 HTML乱码因为JSP中也包含html的内容,HTML本身也是有编码格式的。
JSP中文乱码问题有如下几个方面:页面乱码、参数乱码、表单乱码、源文件乱码。
下面来逐一解决其中的乱码问题。
一、JSP页面中文乱码在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。
先看一个JSP程序:[java]view plaincopyprint?1.<%@ page language="java"import="java.util.*" %>2.<html>3. <head>4. <title>中文显示示例</title>5.6. </head>7. <body>8.这是一个中文显示示例:9. <%10. String str = "中文";11. out.print(str);12. %>13. </body>14.</html>上面这个JSP程序看起来好像是在页面显示几句中文而且标题也是中文。
运行后在浏览器中显示如图所示原因在于没有在JSP中指定页面显示的编码,消除乱码的解决方案很简单上面代1.<%@ page language="java"import="java.util.*" contentType="text/html;charset=GB2312" %>再次运行乱码消失,原理就是向页面指定编码为GB2312,那么页面就会按照此编码来显示,于是乱码消失。
二、URL传递参数中文乱码一般情况下在使用get方法提交表单的时候传递的参数如果是中文的话很可能会出现乱码。
下面是一个示例程序[java]view plaincopyprint?1.<%@ page language="java"import="java.util.*" contentType="text/html; charset=gb2312"%>2.<html>3. <head>4. <title>URL传递参数中文处理示例</title>5. </head>6. <%7. String param = request.getParameter("param");8. %>9. <body>10. <a href="URLCharset.jsp?param='中文'">请点击这个链接</a><br>11.你提交的参数为:<%=param%>12. </body>13.</html>上面这个JSP程序的功能就是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,这个程序的运行效果如下图对于URL传递中文参数乱码这个问题,其处理方法比较特殊,仅仅转换这个中文字符串或者设置JSP页面显示编码都是不能解决问题的,需要修改Tomcat服务器的配置文件才能解决问题。
jsp页面显示中文乱码:jsp页面的编码方式有两个地方需要设置:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ page contentType="text/html;charset=utf-8"%>其中:pageEncoding 指的是jsp文件本身在本地保存时的编码方式。
contentType的charset 是指服务器发送网页内容给客户端时所使用的编码。
从第一次访问一个jsp页面开始,到这个页面被发送到客户端,这个Jsp页面要经过三次编码转换:第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。
第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效所以最终的解决方法为:在jsp页面设置pageEncoding或者contentType的其中一个为支持中文的编码格式(如utf-8,gbk,gb2312)。
完美解决JS中汉字显⽰乱码问题(已解决)如题,刚才看了⼏篇⼤家的讨论,忽然也想起要将⾃⼰最近研究的问题贴出来,凡是和JS中乱码相关的问题都发到这⾥把,⼤家⼀起研究。
:)场景⼀:write写出来的内容是utf-8格式的,如果保存的write数据中有不是utf-8编码的中⽂,对write嵌套俩次以上就会有乱码。
由于⼿头没有现成的⽂件,刚才临时制作了⼀个,这是1.htm页⾯的代码:复制代码代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script language="JavaScript" src="1.js"></script></head><body onload=myjs(1)></body></html>这是引⽤的1.js⽂件代码,俩个⽂件均⽤简体中⽂保存⽽不是utf-8复制代码代码如下://这是JS递归⾃写过程中汉字乱码的演⽰程序//不光是中⽂内容不⾏,就连注释如果是中⽂有时候也不⾏//感觉JS⼀碰上中⽂就变得很不稳定=_='//Dec. 29th 2005 created by shouhaimu(QQ:30836570)function myjs(i){var t="<html>\n";t+="<head>\n";t+="<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>\n";t+="<script language='JavaScript' src='1.js'></script>\n";t+="</head>\n";t+="<body>\n";t+="<input type=button onclick=myjs("+(i+1)+" value='这是演⽰程序,已经运⾏了"+i+"次!'>\n";//上⾯这⾏如果改成下⾯这句就可以正常显⽰,看来确实是JS对汉字的⽀持不够好://t+="<input type=button onclick=myjs("+(i+1)+" value='This is my code,it has run "+i+" times!'>\n";t+="</body>\n";t+="</html>\n";document.open();document.write(t);document.close();}运⾏第2次以上就会有乱码。
JSP技术中的中文乱码成因与对策探析JSP技术是进行动态网页设计过程中的关键技术,然后在进行网页的设计和开发过程中,利用JSP技术会经常出现中文乱码的问题,从而影响了动态网页的正常使用。
因此,本文通过简要介绍JSP技术开发过程出现中文乱码的主要原因,进而针对中文乱码出现的不同原因提出了相应的解决策略。
标签:JSP技术;动态网页技术;中文乱码;显示乱码0 引言中文利用了特殊的字符编码方式,所以在利用JSP技术进行动态网页开发过程中,如果没有注意到这一点,很可能会造成中文乱码问题。
中文乱码问题出现的原因有很多,所以本文主要介绍了中文乱码出现的主要场景,进而针对其出现的原因提出了响应的解决策略,从而为更多的JSP技术开发人员提供参考。
1 字符常见的几种编码格式字符常见的几种编码格式如下:第一,Lain-1编码,这种编码格式仅仅支持英文系列的编码,不支持汉字编码,因此在具有汉字的情况下,一定不能使用这种编码方式;第二,GB2312/GBK编码,这种编码方式是专门用来表示汉字的,而且支持简体字和繁体字两种不同的表示方式;第三,unicode编码,这种编码方式支持中文的编码,同时也支持英文的编码,但是它无法很好地对Latin-1编码格式进行兼容;第四,UTF-8编码,目前很多开发的场景下都是使用该种编码方式进行编码,它不仅支持中英文,而且对其他编码方式都能做的很好的兼容。
2 影响JSP技术中文乱码的外部因素其实在利用JSP技术进行动态网页的开发过程中,会受到很多外在因素的影响,这些因素也是造成中文乱码的重要因素,主要体现在以下几点:2.1 操作系统的字符编码由于操作系统存在很多版本,因此其字符编码也不尽相同,对于很多操作系统来讲,默认的编码方式是Latin-1的编码方式,即很多操作系统默认是不支持中文的。
但是,值得庆幸的是,目前很多操作系统可以通过修改其配置文件,更改它的编码方式,能够满足不同用户对操作系统的需求。
register.jsp
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" src="js/checkreg.js"></script>
checkreg.js
function check(myform){
if(myform.email.value==""){
alert("test请输入Email地址!");myform.email.focus();return (false);
}
if(!checkemail(myform.email.value)){
alert("您输入Email地址不正确!");myform.email.focus();return (false);
}
}
JSP文件调用外部js文件时,alert出来的对话框中中文是乱码!
解决方案:将js文件在UltraEdit等软件中,另存为utf-8编码格式,再复制到工程中
总结:
许多乱码情况都是两个文件编码格式不统一造成的,所以将两个文件的编码格式统一是解决乱码问题的一个指导思想!
1、在JS里对中文参数进行两次转码
复制代码代码如下:
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
var aMsg = [
"很不满意|与人们描述的严重不符,非常不满",
"不满意|部分有与人们描述的不符,不满意",
"一般|一般,没有人们描述的那么好",
"满意|不错,与人们描述的基本一致,还是挺满意的",
"非常满意|与人们描述的完全一致,非常满意"
];
aMsg = encodeURI(aMsg);
aMsg = encodeURI(aMsg);。