jsp从数据库中取出的中文String都是问号?

Lalphbet 2004-03-20 02:16:58
各位大哥大姐,你们好:)

我从数据库中取出的中文是问号,不知道如何解决,请教。暂时平台如下:
Winxp pro sp1+vm(里边跑PostgreSQL7.4),jdbc2,jdk1.4.2,tomcat5.0.19

从数据库中取数据问号

曾经采取如下方法解决:
1 <%@ page contentType="text/html;charset=gb2312"%>
中文依旧是问号


2 <%! String translate(String str){
String result=null;
byte temp[];
try{
temp=str.getBytes("iso-8859-1");
result=new String(temp);
}

catch(UnsupportedEncodingException e){
System.out.println(e.toString());
}
return result;
}%>

在调用这个函数处理数据之后,仍然只显示问号

3
<%@ page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
%>
中文依旧是问号

上面三种方法都不行,另外请注意,中文是问号,而不是乱码,请教该如何解决,谢谢


pgsql的文件:
-bash-2.05b$ vi initdb.i18n
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME
...全文
337 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lalphbet 2004-03-22
  • 打赏
  • 举报
回复
大家愿意帮忙我是十分高兴的,但是还请大家看清楚我的问题,谢谢,至于我自己都已经试过的问题,请大家不要再解答了,谢谢
jsp文件中的中文可以通过以上方法解决,但是pgsql里的并不能通过这样解决,谢谢
xqj526 2004-03-22
  • 打赏
  • 举报
回复
KaedeV(月华剑士*枫) :

我已经爱上了你.
强烈要求楼主给 KaedeV(月华剑士*枫) 满意分!!!!!!!!!!!!!!
KaedeV 2004-03-21
  • 打赏
  • 举报
回复
在JSP上面 加上
<%request.setCharacterEncoding("GBK");%>
数据库连接字符窜jdbc:mysql://localhost:3306/EOASDB?useUnicode=true&characterEncoding=GBK
这样就行
swj_20 2004-03-21
  • 打赏
  • 举报
回复
mark
cuilongtao2003 2004-03-21
  • 打赏
  • 举报
回复
<%@page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%!
public String ex_chinese(String str){
if(str==""){
str ="null" ;
}
else{
try {
str = new String(str.getBytes("iso-8859-1"),"gb2312") ;
}
catch (Exception ex) {
}
}
return str ;
}
%>

字段名=ex_chinese(字段名);
我用过了,可以
Lalphbet 2004-03-21
  • 打赏
  • 举报
回复
恩,现在发现用PreparedStatement insert进去以后都是乱码。进一步解决中:)
hangchangc 2004-03-20
  • 打赏
  • 举报
回复
干吗那不麻烦呢,实现上是你的数据库驱动的问题,你下载个最新的JDBC驱动或把相应的补丁打上,基本上就把问题解决了。我以前为是为了Oracle里提取的中文全为?????而发了好长一段时间解决,结果只是Oracle8i自动的JDBC驱动出的错,到网上下载了一个JDBC驱动,一切问题全解决了。
如果不错,你到网上下载相应的驱动,试一试就知道结果。
duskrhythm 2004-03-20
  • 打赏
  • 举报
回复
解决方法:
1、用DBTools之类的工具看看数据库内的内容是不是乱码,如果是在输入数据库的时候就要注意编码方式,像mysql之类的数据库软件是可以设定编码方式的,不妨看看。
2、如果数据库内确实无乱码,再取出来使用getBytes("iso-8859-1")应该能解决大部分问题
3、题外话,有时候很多问题不一定就是JAVA代码的问题,做东西的时候,周边软件多了解清楚会比较好。
pengpong 2004-03-20
  • 打赏
  • 举报
回复
ding
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
顶一下子
xunyiren 2004-03-20
  • 打赏
  • 举报
回复
up
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
在linux的终端下select * from MyTable;
可以正常显示中文,但是从数据库中取出数据,就成问号了
singnet 2004-03-20
  • 打赏
  • 举报
回复
你先查看一下数据库里是不是乱码,如果是的话就要在插入数据库的时候要进行转码,然后在取出的时候再还原
donghx1234 2004-03-20
  • 打赏
  • 举报
回复
up
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
用过了大哥,麻烦你看清楚我的帖子内容啊
cuilongtao2003 2004-03-20
  • 打赏
  • 举报
回复
<%@ page import="java.io.*"%>
<%! String trans(String chi)
{
String result = null;
byte temp [];
try
{
temp=chi.getBytes("iso-8859-1");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
<%
out.println(trans(request.getParameter("name")));
%>
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
啊这里的格式不对啊,我明明对好了
写了两个web-inf错了,只有一个,testdb.jsp在pgsql目录下,EncodingFilter.class在
org.hospital目录下
package 我改成org.hospital啦
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
我知道怎么给分了:)
另外一个问题,这个filter是怎么用的?
我在当前web应用里的web.xml里写了一句,在<description>之后,<servlet>之前
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.hospital.EncodingFilter</filter-class>
</filter>

目录结构是这样的

d:\tomcat\webapps\pgsql\web-inf\WEB-INF\classes\org\hospital\EncodingFilter.class
| |
| |
testdb.jsp web.xml
重新启动tomcat,还是问号,至于楼上 lostyq(遗忘星空) 大哥所说的,没看懂,能不能具体一点,谢谢
Lalphbet 2004-03-20
  • 打赏
  • 举报
回复
谢谢哦,我先测试成功以后,再看怎么管理给分,不知道怎么样搞。
有分会分给你的,如果测试可以的话:)
cwbnig 2004-03-20
  • 打赏
  • 举报
回复
你测试成功了???
我也不知道怎么给分,给分给我呀,我的分数太低了,快给我呀,嘻嘻,多谢了。
加载更多回复(5)

81,094

社区成员

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

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