加了过滤器,字符编码为UTF-8,为什么中文不能正常显示?

Alinaxz 2009-06-18 04:32:04
请教下
我做了一个登陆页面,有用户名,密码,角色这几个field,角色是一个下拉列表,下拉列列表的内容是从数据库读取的,
当列表内容是英文时可以正常显示,
但如果是中文,下拉列表就为空白了,但是后台能够正常打印出内容,

另外我查看源文件发现无论列表内容是中文还是英文,“户名,密码,角色”这些字都是“用户”这样的编码,“户名,密码,角色”这几个词也是从数据库读取的,在页面上“户名,密码,角色”这几个词能够正常显示,

代码是servlet,加了过滤器,设置的字符编码为"UTF-8",

请问为什么中文时下拉列表就为空的呢?
...全文
614 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
kulou54 2009-06-18
  • 打赏
  • 举报
回复
中文问题:
1.如果想提高可移植性,还是去查询一次数据比较好

2.如果是tomcat服务器的话,方法如下:
a.页面上加入pageEncoding="utf-8",JS提交的话可以加上encodeURI(scolCode.value)方法
b.后台用response.setContentType("text/html;charset=utf-8");//如果有过滤器的话这里可以不用
c.使用str = new String(str.getBytes("iso-8859-1"), "utf-8").trim();


3.如果是websphere服务器的话,方法和tomcat的类似,但是第c部就可以不用再转了

这些都是我在开发的时候测试出来的。。。

我基本做企业内部网站所以访问量不是什么大问题。。基本上都是多查询一次数据库,而且我开发是用tomcat,可客户那是用websphere的
liujinlongmsn 2009-06-18
  • 打赏
  • 举报
回复
国际化的问题吧
qq306850549 2009-06-18
  • 打赏
  • 举报
回复
编码统一下....都改成gbk
shaoang007 2009-06-18
  • 打赏
  • 举报
回复
使用过滤没问题的
你的代码怎么写的啊


----------------------------
http://www.shawnlin.cn
qq707472 2009-06-18
  • 打赏
  • 举报
回复
一般的过滤器只对post提交有用哦·
hzd2712 2009-06-18
  • 打赏
  • 举报
回复
Servlet里和Jsp里一个道理啊~~~
楼主再设置setCharacterEncoding("UTF-8") 试试
fatso1984 2009-06-18
  • 打赏
  • 举报
回复
服务器用的是什么?看看服务器软件的编码是什么~
我以前用tomcat的时候就出现过这种问题,百思不得其解..后来才发现是这个问题
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
不是jsp页面,是servlet代码,通过下面代码实现的

html.java的构造函数
public html ()
{
setElementType ("html");
setCase (LOWERCASE);
setAttributeQuote (true);
addAttribute ("xmlns", "http://www.w3.org/1999/xhtml");
/**
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
**/
}


另一个方法里的部分
m_html.addElement(m_head);
m_html.addElement(m_body);
m_body.addElement(new a().setName("top"));
if (title != null)
m_head.addElement(new title(title));
if (plain)
return;

// css, js
if (javaClient)
m_head.addElement(new link("http://www.compiere.org/standard.css", link.REL_STYLESHEET, link.TYPE_CSS));
else
{
m_head.addElement(new link(WebEnv.getStylesheetURL(), link.REL_STYLESHEET, link.TYPE_CSS));
m_head.addElement(new script((Element)null, WebEnv.getBaseDirectory("standard.js")));
}
m_head.addElement(new meta().setHttpEquiv("Content-Type", "text/html; charset=UTF-8"));
m_head.addElement(new meta().setName("description", "Compiere HTML UI"));
sebatinsky 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Alinaxz 的回复:]
加了啊
<head>
<title>
登录
</title>
<link href="/compiere/standard.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="/compiere/standard.js" language="JavaScript1.2"> </script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="description" content="Compiere HTML UI"/>
<link href="window.css" type="text/css" rel="stylesh…
[/Quote]


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">

这个事最一般的,呵呵,虽然没有用过你那个,不过一般都是一样的吧,主要是的是楼主要调试,在哪里出现的问题就到哪里去找原因,可能不是说你传到后台是这样的编码,是找找他们都是些什么编码格式,比如你看看你的环境,如果用myeclipse的话,看看是否用的是ISO,或者其他的,
你从数据库当中找来的都是编号,传到后台都应该是编号而已,你要是传回来的是用户名,那这个首先就有点那个了,当然这个不是问题.问题是,你传回去的,仍然是那些参数,你需要设置断点试试,从你的Servlet中得到的内容换不同的方式打印也好,自己查看也好,看是什么格式的.就可以了
hwy000 2009-06-18
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=UTF-8" language="java"%>
<head>
<title>
登录
</title>
<link href="/compiere/standard.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="/compiere/standard.js" language="JavaScript1.2"> </script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="description" content="Compiere HTML UI"/>
<link href="window.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="window.js" language="JavaScript1.2"> </script>
</head>
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
在网上找过了,试了很多方法,还是不行啊
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
加了啊
<head>
<title>
登录
</title>
<link href="/compiere/standard.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="/compiere/standard.js" language="JavaScript1.2"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="description" content="Compiere HTML UI"/>
<link href="window.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="window.js" language="JavaScript1.2"></script>
</head>

可还是空白的
stellar2020 2009-06-18
  • 打赏
  • 举报
回复
解决方法网上一大把,找点资料仔细看看吧
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
很急啊,在线等!
hwy000 2009-06-18
  • 打赏
  • 举报
回复
jsp中再添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
还是一样的结果啊!
hwy000 2009-06-18
  • 打赏
  • 举报
回复
如果JSP是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">开头请改为<%@ page contentType="text/html; charset=UTF-8" language="java"%>
Alinaxz 2009-06-18
  • 打赏
  • 举报
回复
谢谢!
我试试看!
xfzhuhan 2009-06-18
  • 打赏
  • 举报
回复
GBK看看,我常用这个
GkfSyser 2009-06-18
  • 打赏
  • 举报
回复
用 gb2312编码看看

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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