为什么java代码不将文本转换为utf8字符?

时间:2014-06-26 11:50:42

标签: java javascript jsp utf-8 struts-1

我的jsp页面编码如下:

<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>

<%

response.setHeader("Cache-control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
%>

javascript代码在firebug中打印希腊字符以下是代码:

function save() {
console.log(document.editDistributionListForm.elements['name'].value); //this line prints greek characters
  document.editDistributionListForm.elements['subAction'].value='submit';
  document.editDistributionListForm.submit();
}

当'name'值如上所述发送到struts动作时,该字符串不打印希腊字符而是打印????????????????

输入的希腊字符是:αβγδεζηθ

Struts Bean(示例代码):

public void setName(String name) {
                this.name = name;
        }

        public String getName() {
                return name;
        }

Struts Action(示例代码):

protected ActionForward updateList(ActionMapping mapping,
                                HttpServletRequest request,
                                EditListForm form)
                        throws CannotOverwriteExistingListException, EmptyListException,
                                ListUpdateException {
log.debug("form.getName :: "+form.getName()); //this line when printed prints (???) 

}

当数据从html发送到java时,即从浏览器发送到服务器时,字符串从希腊转换为????我做错了什么。我无法确定我错过了什么......

请帮忙。

1 个答案:

答案 0 :(得分:1)

UTF-8中没有希腊字符。

我认为您应该重新编程您的程序,使其打印UTF-16字符(包括希腊字符)。 (将页面编码从UTF-8更改为UTF-16)