<head>
里面增加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="pragma" content="no-cache">试试看
里面增加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="pragma" content="no-cache">试试看
解决方案 »
- http_request.getAllResponseHeaders()取不到cookie信息,跪求啊
- 运用freemarker打开页面时如何自动设置radio为选中状态
- 列表排序问题
- 为什么我每次新建了一个Servlet后,我的项目就不能访问了?
- 请教关于使用Java实现对SVN服务器用户的创建和修改
- 求救,javascript 为什么没有获得optionTest对象
- java中怎样得到ip的流量
- 急!有会(Calendar)日历操作的吗?
- jsp连接oracle的郁闷问题(解答者高分赠送)在线等
- 关于java对接RESTFul接口,url请求问题
- 如何jsp页面中用科学技术法显示数字?
- 在JSP中怎么实现在一个页面中打开打开另一个页面,同时关闭原来的页面
specode=new String(bspecode);
byte[] bmobile=mobile.getBytes("ISO8859-1");
mobile=new String(bmobile);
byte[] bmsg=msg.getBytes("ISO8859-1");
msg=new String(bmsg);
这样就可以变成中文了
你可以copy你正常的那个tomcat来覆盖你现在的tomcat,保留原来的xml配置文件。
或者用rainshow的编码转换方式..
不过我上次用编码转换还是有错,结果我把开发用的那个tomcat覆盖过去就好了
<%@ page contentType="text/html; charset=GB2312" %>
每个文件里加上:
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
中文处理的常见对策,在网上经常可见的主要是下面2种:
<%@ page
contentType="text/html;charset=gb2312" %>
或者:
<%
String Hi="你好";
byte[]
tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%> 虚拟小龙亭也主要采用了上面2种方法进行了修改,从而变成了1.1版。 通过简单总结,示例中的中文处理发生于以下几个地方: 1 在url附带中文参数,可以直接读取。
例如:
<%= request.getParameter("showword")%> 2
与数据库有关的各种sql操作 这里使用的Access没有发生问题。
3 读取HTML
form表单中递交的中文值 在jswdk中需要加以编码,较为简洁的写法如:
String name1=new
String(request.getParameter("user_id").getBytes("ISO8859_1"));
另外,在jdk1.3的支持下,不需要加入
<%@
page contentType="text/html;charset=gb2312"
%>
而在jdk1.2.2下面,即使2种方法同时运用也很不稳定。 而在resin平台,情况较好。只要在页面第一行加入:
<%@
page contentType="text/html;charset=gb2312"
%>即可正确处理中文。
如果再加编码则反而不对。 5
session中包含的中文 在jswdk中,奇怪的是如果从form中读出的值经过编码则可正确显示;
但直接赋予中文值则不行。
resin平台很好,同上。 6 对于对变量赋中文值后正确显示中文。
例如以下程序:
<%@ page contentType="text/html;charset=gb2312"
%>
<html><head></head><body>
<%
String
Hi="你好";
byte[] tmpbyte=Hi.getBytes("ISO8859_1");
Hi=new
String(tmpbyte);
out.print(Hi);
%>
</body></html>
同样是jswdk1.0.1,以上的表示方法在jdk1.2.2中没有问题,但在jdk1.3下却无法显示。
resin平台很好,同上,经过测试,只需要在<head>中补上
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
而不需要<%@ page
contentType="text/html;charset=gb2312" %>也能正确显示中文。 体会: jswdk也许只能用于普通开发,稳定性和其它问题可能不如商业软件。
由于jdk1.3版性能要好于jdk1.2.2很多倍,并且对中文的支持也较好,所以应该加以采用。 作为免费的商业软件,resin不仅速度快,稳定,自动编译,可指出出错行,可在服务器端支持使用javascript等,而且,至少我觉得对中文的支持很好。
当然,如果不必做任何处理即可正确显示中文将是我们所期待的。 另外,相信在unix/linux/solaris下应该没有这样的问题。
String name=new String(request.getParameter("sname").getBytes("8859_1"),"gb2312");
在下曾经收藏过一篇有关中文处理的文章,共享出来,希望对你能有所帮助.
<<关于中文问题的研究>>很多朋友下载我的BBS-CS社区程序后安装总发现有中文问题,特别是win下Tomcat4以上版本都会出现中文问题(而在Linux下和Tomcat3.x都没有问题),主要问题是页面显示乱码,必须在IE中调整字符集为GB2312才可以正常显示,为解决这个问题,就在每个JSP的页面头上加入<%@ page language="java" contentType="text/html; charset=gb2312" %>这一行,中文是显示了,但是发现从数据库读出的字段变成了乱码,解决的方法是将所有从数据库读出的字段都进行转码,这是一个很大改动,就算我也不愿意去做:(,所以我在win的Tomcat4下研究了一下出现中文乱码的原因:
我首先测试添加数据的情况,发现添加数据后,载数据库中存的中文字是正常的,我查了一下我的数据库连接字串:
mysql.url=jdbc:mysql://localhost:3306/bbscs?user=root&password=&useUnicode=true&characterEncoding=8859_1
其中useUnicode=true&characterEncoding=8859_1很重要,说明数据库是用ISO8859_1的字符集来存取数据的,而java程序在处理的字符的时候默认就是采用统一的ISO8859_1字符集,这也体现了JAVA国际化思想,所以在数据添加的时候JAVA和数据库都是以ISO8859_1方式处理,所以不会出错。
但是在读取数据的时候就出现问题了,数据读出也采用ISO8859_1的字符集,而在JSP的文件头中用了<%@ page language="java" contentType="text/html; charset=gb2312" %>,这说明页面采用GB2312的字符集显示,这就和读出的数据不一样,所以页面显示的从数据库中读出的字符是乱码,所以要对这些字符转码,从ISO8859_1转成GB2312,就可以正常显示了。
在Tomcat3.x、Resin中或是在Linux下,我没有加<%@ page language="java" contentType="text/html; charset=gb2312" %>,而页面中的<meta http-equiv="Content-Type" content="text/html; charset=gb2312">起到了作用,可以正常显示,而加上<%@ page language="java" contentType="text/html; charset=gb2312" %>会报错,说明Tomcat4以上版本的引擎在处理JSP的时候不太一样。
在BBS-CS 3.0中,由于在处理数据库的方面都封装了,所以只要在页面输出的时候做处理就可以了,我会提供一个Win下Tomcat4使用的版本!
数据库的字符集很重要,如果考虑多语言版本,数据库的字符集就应该采用ISO8859_1,只需要在输出的时候采用不同的字符集做转码就可以了,但是这样的做法也有一个问题就是在SQL下不能正常显示字符,各位可根据情况自己处理啦:
如何在Tomcat4.0.1中解决中文输入和显示问题首先你需要创建一个JAVA文件 名称为MyUtil.java
MyUtil.java的内容如下
import java.io.*;
public class MyUtil{
public static String gb2312ToUnicode(String s){
try{
return new String(s.getBytes("ISO8859_1"),"gb2312");
}
catch(UnsupportedEncodingException uee){
return s;
}
}
public static String unicodeTogb2312(String s){
try{
return new String(s.getBytes("gb2312"),"ISO8895_1");
}
catch(UnsupportedEncodingException uee){
return s;
}
}
}
作完后把此MyUtil.java 或者 MyUtil.class 放在你自己的WEB-INF/classes/下
其次 你要更改几段代码在要显示的JSP文件中
1 在最上面的开头字段该成如下样子
<%@page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,MyUtil,java.util.*"%>
其中 import 近来的MyUtil 和 java.util.* 是解决中文问题关键的所在,切记一定不要忘记补上。
2 找到JSP文件中的 request.getParameter() Method,并且是实际上真正向数据库提取参数起作用的字段,用MyUtil.gb2312ToUnicode()方法 把 request.getParameter()包起来;工作原理是利用import近来的MyUtil.class里的MyUtil.gb2312ToUnicode() 方法实现UTF8字符转换为GB231编码。
具体修改方法如下例:
M=((request.getParameter(M)!=null)?
(String)request.getParameter(M):"" );
更改后变为
M=(MyUtil.gb2312ToUnicode(
(request.getParameter(M)!=null)?
(String)request.getParameter(M):"" ));
便可以完成中文问题的修改工作
运行后的结果就是你JDK编码的方式!
可以加上<%request.setCharacterEncoding("gb2312");%>只要保证每个页面的编码一致,就不会有乱码
第一步:比如我的TOMCAT装C盘里
,去把
C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\jsp-examples\WEB-INF\classes\filters里的SetCharacterEncodingFilter.class拷贝到你的WEB应用目录下WEB-INF\classes\filters里,注意区分大小写;
第二步:修改你WEB应用里的web.xml文件(不是TOMCAT里的那个)在<web-app>后加入,如下代码
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
第三步:重新启动你的TOMCAT,一切OK!
也就这样了,我用的是TOMCAT5。0。2,已经没有问题了,给分吧!