2011-02-24 82 views
3

我有一个运行在jboss 4.2.2服务器下的jsp页面。JSP土耳其字符问题

这个页面的结构是这样的:

包括头部(头写入另一页上,就像在ASPX母版。)
(体(问题出在哪里出现))
包括足(足也写在另一页。)

头页包含了编码和meta标签:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

当我在页面上写字符如şğĞİÇçÖ(土耳其语)时,字符显示为“?” (问号)我该怎么做才能避免这种行为?

如何显示正如jsp页面中显示的文本?

+0

“当我在页面上写东西时” - 我想写它不会导致问题。也许提交,存储在数据库中,或其他任何事情正在造成这种情况。澄清你的问题。 – Bozho 2011-02-24 09:23:37

+0

我的意思是硬编码在页面中,比如​​默认为 – 2011-02-24 09:24:30

回答

4

我看到了两个可能的原因:

  1. 你的编辑器没有的页面保存为UTF-8。检查默认设置和/或另存为选项。在某些JSP中缺少@page。它必须存在于全部 JSP文件中,也包含在内。

无关的具体问题,在JSP的顶部以下是已经足够了:

<%@ page pageEncoding="UTF-8" %> 

,你已经把已经有(隐含的)默认的残余。

+0

其实只有一个全局页面,表示head.jsp,它包含了这些设置。我如何在eclipse中检查这些选项? – 2011-02-25 13:03:49

+0

我重申:它必须存在于所有** JSP文件中。至于Eclipse,在首选项中选中* General> Workspace> Text file encoding *。 – BalusC 2011-02-25 13:09:44

1

除了DOCTYPE声明它通常是一个好主意,包括meta标签文档<head>像这样:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

除此之外BalusC's suggestion所有文件涉及必须要与实际保存UTF8编码非常重要。

+0

当通过HTTP提供页面时,该元标记**被忽略**。相反,charset将从HTTP响应头获得。我的答案中的JSP页面编码就是这样。 OP只需确保它已在所有JSP中设置。另见http://www.w3.org/TR/html4/charset.html#h-5.2.2和http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters- right.html#JSPServletResponse – BalusC 2011-08-05 14:55:33