这个问题困扰我好几天了,查了大量的资料都没有解决,实在想不出什么办法了。我的环境:我的操作系统:windows xp 5.1编辑环境:netBeans 5.X (捆绑tomcat)JDK:5.X数据库:mysql 5.X设置如下:所有jsp页面都设置的是utf8编码,数据库进出口设置的也都是utf8编码,也就是统一utf8编码,
在从页面获得数据存如数据库的时候,只是做了一步iso-8859-1->utf8,因为result设置的是utf8,
所以没进行转码。
出现的问题:从数据库取出数据和往数据库插入数据都没问题,而且取出数据的时候在当前页面显示也没问题,
但是当把取出的这些数据从当前页面传到下一页面的时候,就出现了不正常。比如说:“技术”这个两个字,
当前页面显示正常,但是传到下一个页面的时候就显示的是”技[]“,其中”技“后面的字显示成了一个方框,
不仅仅是这个字,还有一些其它的字也是显示这样,但是一般都是在末尾出问题。我初步断定是数据丢失,
但是为什么丢失就不知道了,还有,也可能是tomcat的问题,但是自己水平有限解决不了,请各位高手帮忙,
先谢谢了。可能说的有点罗嗦,但是我尽量把问题说的清楚些。
在从页面获得数据存如数据库的时候,只是做了一步iso-8859-1->utf8,因为result设置的是utf8,
所以没进行转码。
出现的问题:从数据库取出数据和往数据库插入数据都没问题,而且取出数据的时候在当前页面显示也没问题,
但是当把取出的这些数据从当前页面传到下一页面的时候,就出现了不正常。比如说:“技术”这个两个字,
当前页面显示正常,但是传到下一个页面的时候就显示的是”技[]“,其中”技“后面的字显示成了一个方框,
不仅仅是这个字,还有一些其它的字也是显示这样,但是一般都是在末尾出问题。我初步断定是数据丢失,
但是为什么丢失就不知道了,还有,也可能是tomcat的问题,但是自己水平有限解决不了,请各位高手帮忙,
先谢谢了。可能说的有点罗嗦,但是我尽量把问题说的清楚些。
解决方案 »
- jsp中怎么插入指定的excel文件
- java获取JSP页面显示数据的问题,急急急
- 怎么把jsp中的特定表格输出成excel?怎么把excel中某几列特定的数据存到MYSQL中?
- 急求ssh+dwr分页代码
- 宾馆住宿费以及时间的计算,求助
- 请教:从数据库取10个数据,在jsp里以2行5列方式存放,请教如何实现?
- 再发个问题,在线等,解决后马上散分!
- 我如何用file类得到图片的大小??
- 请教:好的中文Jsp教程。
- 有一个业务不知道怎么去实现,各位帮忙指导指导,我是菜鸟
- 为什么用<fmt:message key="label.username"/>取资源文件里的值时总是显示???label.username??? 这样的字符?
- 用struts标签<logic:iterate>如何实现这样的菜单
<td><a href="../jsp/showTopic.jsp?id=<%=integer.toString()%>&topic=<%=holdPara.getTopic()%>"><%=holdPara.getTopic()%></a></td>在当前页面生成链接后,点击这个链接,转到下一个页面的时候就出现了问题,但是在地址栏中显示都还是正常的,而到页面用td><%=request.getParameter("topic")%></td>显示就出现一部分汉字显示不正常了。
你那个方法我试了的,把页面的编码和显示都设置成gb2312,然后连接数据库使用set names gb2312(跟改my.ini一个效果),但是还是会出现我现在的问题。
<td><a href="../jsp/showTopic.jsp?id=<%=integer.toString()%>&topic=<%=URLEncoding(holdPara.getTopic())%>"><%=holdPara.getTopic()%></a></td>
下个页面需要
URLDecoding(...
你的那个方法我用了下,编辑通不过,那个方法是java.net.URLEncoder.encode()和java.net.URLDecoder.decode(),编译的时候会出现错误提示:C:\MyWeb\topics\build\generated\src\org\apache\jsp\jsp\index_jsp.java:202: URLEncoder() 可以在 java.net.URLEncoder 中访问 private不知道怎么回事?
我就是这么做的,java默认的编码格式是utf8,我的数据库的编码格式也都设置的是utf8,从页面获得参数放入数据库的过程中进行一次转码,iso-8859-1->utf8因为result设置的是utf8,所以取出数据不需要进行转码。
或者把gb2312换成utf-8事实把
server.xml中的connector中有两个属性来指定url的编码,一个是URIEncoding,一个是isBodyContentEncoding(第二个记不清了,可以自己查以下tomcat的文当)。第一个属性用来指定url的编码,第二个属性是个布尔值用来指明url使用和页面一样的编码,如果都不指定默认为iso8859-1.
你的问题,可以把第一个属性设成utf-8,或者把第二个属性设成true应该就能解决。
String a=new String(request.getParameter("aaa").getBytes("iso-8859-1"),"GB2312");
by Jason Orendorff, 1 March 2002
Programmers should understand Unicode becauseIt is one of the cornerstones of software internationalization.
The Web is full of Unicode data.
XML and HTML are based on Unicode.
WinNT-based operating systems use Unicode for all string values internally.
This article is a short course on Unicode programming.Contents
An Introduction to Unicode
Encodings
Unicode on the Web
Unicode in HTML and XML
Specifying the Encoding
Numeric Character References
Unicode in Java
Unicode Text in Java Source Code
Unicode I/O in Java
Encoding and Decoding Java Strings
Unicode in Python
Unicode Strings in Python
Unicode Support in the Python Standard Library
Unicode files and Python
print and Unicode strings
Unicode and Windows Programming
Where to Go Next
不知道你是怎么试的?
关于getBytes调用
getBytes不能乱调。getBytes把它使用在解决乱码问题的情况是这样的,当一个以某种编码的字符串字节流假设gbk,在转化为字符串时使用了错误的编码方式假设utf-8时就出现了乱码,这时人们调用getBytes("utf-8")时就可以的到原来正确的gbk编码的字节数组,这时在显示的使用gbk将其转化为字符串就不会出问题了。也就是说你必须知道原字节流的编码和使用的错误的编码才能正确解决乱码。
设了tomcat之后不需要用getBytes。
我在asp.net 中也遇到过 连接挑转有2种1种是从页面(浏览器)跳转一种是从服务器直接跳转你把你的url写全了 如http:// ......
式一下
<a href=<%=respones.encodeURL("httpL//....jsp")%> > Click</a>
<%
request.setCharacterEncoding("utf-8");
%>
就可以解决。
去掉该页其他所有设置编码的程序,就留这个。
其实我觉着编码问题,根本就不是很难解决的大问题,搞清怎么回事应该很好解决的,因为并不需要写好多复杂的程序,感觉lz有点不求甚解。