€符号未定义

时间:2014-06-11 14:37:40

标签: java mysql jsp struts2 character-encoding

我的动作中有一个列表,我通过保存在MySql DB上的值来表示。

我只存储了一个对象,其名称为

在jsp中我这样做:

<s:iterator value="unitesList">
    <s:property value="designation"/>
</s:iterator>
<s:select list="unitesList" name="unity" listValue="designation" listKey="id" />

我有这个:

€
<select name="unity" id="unity">
    <option value="1">?</option>
</select>

为什么在<s:select>元素上元素转换为?

2 个答案:

答案 0 :(得分:1)

将其放在JSP页面的顶部。 UTF-8编码中的符号显示优于?

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

答案 1 :(得分:1)

如果未定义页面编码,则默认值为(相当于JSP page指令):

<%@page contentType="text/html; charset=ISO-8859-1" %>

您想要的编码不是ISO-8859-1,而是UTF-8,它支持任何语言(请查看Table 23-2 Valid Values for the IANA-Defined Character Set)。

您可以通过三种方式设置页面,请求和响应编码:

  1. 在每个JSP中设置contentType

    <%@page contentType="text/html; charset=UTF-8" %>
    
  2. 在每个JSP中设置pageEncoding

    <%@page pageEncoding="UTF-8" %>
    
  3. 在web.xml中设置<jsp-property-group>一次:

    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>            
        </jsp-property-group>
    </jsp-config>
    
  4. 将相应地生成HTML <meta>标记。在不必要地同时使用pageEncoding<jsp-property-group>时,请注意不要指定不同的编码,这是一个翻译时错误。

    有关此内容的更多信息,请阅读Oracle docs(很旧,但仍然如此)。