我的为什么不显示中文??????????

qinjianhui 2003-03-25 10:32:51
我用的jswdk1.0做的jsp程序,当客户端输入中文时,返回信息却是乱码!
...全文
62 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunenvoy 2003-03-26
  • 打赏
  • 举报
回复
JSP下的中文显示解决方案
在JSP中,中文乱码会让人心乱如麻。读者在使用JSP输出中文时,经常会
发现中文无法正常显示,不是乱码就是出错。经过测试,总结了一下几种方法,
以解决在JSP中显示中文文字问题:
1)修改区域设置:在控制面板中选择区域设置,设为英语(美国),
然后重新启动系统,一切就会正常,或者干脆安装一个英文的操作系统。
2)在JSP页面中加入一条语句:
<%@page contentType = "text/html;charset = gb2312"%>
3)在编译JSP和Servlet时加入代码选项。编译Servlet时使用:
javac - encoding iso8859 - 1 myServlet.java
4)在JSP的Zone配置文件中,修改编译参数为:
compiler = builtin - javac encoding iso8859 -1
使用以上方法后,不需要作其他改动就可以正常显示中文了。
在Windows + Resin 系统中,笔者推荐使用的二种方法,因为这种方法简单
易行。但在其他Application Server 中,可能要用到其他方法,例如,以下面的
方法进行代码转换:
try{
out.println(new((new String("中文字符")).getBytes("GBK"),"ISO8859-1"));
}
catch (UnsupportedEncodingException e){
//..............
}
使用这种方法一定要捕获UnsupportedEncodingException这个异常。
或者使用下面的函数:
<%!
Public String geStr(String str){
Try{
String temp_p=str;
Byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e){
}
return "null";
}
%>
这个函数接受参数为字符串,返回的时转换过内码的另一个字符串。
注意:对于这个字符串转换函数时不能应用在Resin上的。如果使用这个转换
函数,则本来已经输出正常的中文字符就会变成乱码。所以对于Resin,推荐
使用以上方法的的二种方法。
qinjianhui 2003-03-26
  • 打赏
  • 举报
回复
我改用resin了。这个对中文支持比较好。我怀疑是jswdk的问题!
miaoliujun 2003-03-26
  • 打赏
  • 举报
回复
<%@page contentType = "text/html;charset = gb2312"%>
就行了
dwei 2003-03-26
  • 打赏
  • 举报
回复
我用<%@page contentType = "text/html;charset = gb2312"%>
和函数<%!
Public String geStr(String str){
Try{
String temp_p=str;
Byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e){
}
return "null";
}
%>
在Tomcat中中文一切正常,多试试吧。

^_^
qinjianhui 2003-03-25
  • 打赏
  • 举报
回复
我已经试过了。不行啊!是不是其它方面的原因啊!
boy21cn 2003-03-25
  • 打赏
  • 举报
回复
输出前将字符串进行如下的转换:
public String convert2unicode(String nativeCode)
{
if(nativeCode==null || nativeCode.length()==0)
return null;
byte buffer[]=new byte[nativeCode.length()];
int j=0; //j用来标识buffer中的当前插入点
for(int i=0;i<nativeCode.length();i++)
if(nativeCode.charAt(i)>=0x100)
{
char c=nativeCode.charAt(i);
byte bu[]=(""+c).getBytes();
buffer[j++]=bu[0];
buffer[j++]=bu[1];
}
else
buffer[j++]=(byte)nativeCode.charAt(i);
nativeCode=new String(buffer,0,j);
return nativeCode;
}
通过get或post方法得到的字符串才需要经过上述转换。
还有需要查询数据库时也要先转换(有的jdbc-odbc可以自动转换)

我一直是自己写这个函数来进行字符编码转换。
smallbugs 2003-03-25
  • 打赏
  • 举报
回复
<%@ page contentType = "text/html;charset=GBK" %>
qinjianhui 2003-03-25
  • 打赏
  • 举报
回复
有没有高手指教,我很急啊!???
xjavam 2003-03-25
  • 打赏
  • 举报
回复
请用以下方法试试:
在jsp文件中将中文输入或输出的变量进行如下转换:
在文件开始处需有如下声明:
<%@ page contentType="text/html;charset=GB2312" %>

String clientname1 = request.getParameter("clientname");
String clientname = new String(clientname1.getBytes("ISO-8859-1"),"GBK");

当要将中文信息保存到数据库时,有时同样需要进行转换。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧