£符号显示为钻石,中间带有问号

时间:2012-09-09 11:42:44

标签: jsp spring-mvc utf-8 character-encoding spring-roo

我正在创建一个涉及向用户显示财务数据的webapp。来自英国并使用GBP£作为货币,这个角色被大量使用。

然而,不时地,£显示为带有问号的菱形,并且在网页上它会抛出一个无效的字符串UTF-8字节1的1字节字符串。

是否有UTF安全方式显示£符号?以下是我目前正在做的一个例子:

 "Rent Per Annum: £" + '${tenant.currentRent}'

2 个答案:

答案 0 :(得分:4)

特定问题可能至少包含以下一个或多个原因:

  1. JSP文件不是由编辑器(Eclipse,Netbeans,Notepad等)使用UTF-8编码保存的。

  2. 在通过网络发送之前,服务器没有使用UTF-8将JSP生成的字符解码为字节流。

  3. 浏览器没有使用UTF-8将字节流从网络编码为字符。

  4. 这些问题可以解决如下:

    1. 配置编辑器以使用UTF-8保存JSP文件。我不熟悉STS,但我知道它是基于Eclipse的,所以它可能与标准Eclipse中的相​​同。转到窗口>偏好>一般>工作区>文本文件编码,然后在下拉列表中选择正确的编码。

      enter image description here

      另一种方法是使用HTML实体£(正如其他回答者所建议的那样),这样就不再需要保存JSP文件的编码。字符串£中涉及的所有字符都已经被基本的ASCII编码所支持(世界上使用的每个体面的字符编码基本上都“扩展”了ASCII,所以它总是可以工作)和HTML解释器(webbrower)将将HTML实体翻译成正确的字符。

    2. 必须指示服务器使用UTF-8解码JSP输出。这可以在每个JSP的基础上完成

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

      或在整个应用程序范围内

      <jsp-config>
          <jsp-property-group>
              <url-pattern>*.jsp</url-pattern>
              <page-encoding>UTF-8</page-encoding>
          </jsp-property-group>
      </jsp-config>
      
    3. 必须指示浏览器使用UTF-8对HTTP响应进行编码。这可以通过将HTTP响应charset标头的Content-Type属性设置为UTF-8来解决,这已经由解决方案隐式完成,导致#2。

    4. 另见:

答案 1 :(得分:0)

将此作为实体在HTML中编写的便携式方式是&pound;,或者通常使用其字符代码&#163;&#xA3;£。这样,你的源码是普通的7位ASCII,所以基本上独立于编码(忽略像EBCDIC等的深奥)。另请参阅http://www.fileformat.info/info/unicode/char/a3/index.htm