我正在创建一个涉及向用户显示财务数据的网络应用程序。来自英国并使用 GBP £ 作为货币,这个字符被大量使用。
但是,不时地,£ 显示为中间带有问号的菱形,并且在网页上它会抛出一个无效字符 UTF-8 byte 1 of 1 byte string。
是否有 UTF 安全的方式来显示£
标志?这是我目前正在做的一个例子:
"Rent Per Annum: £" + '${tenant.currentRent}'
我正在创建一个涉及向用户显示财务数据的网络应用程序。来自英国并使用 GBP £ 作为货币,这个字符被大量使用。
但是,不时地,£ 显示为中间带有问号的菱形,并且在网页上它会抛出一个无效字符 UTF-8 byte 1 of 1 byte string。
是否有 UTF 安全的方式来显示£
标志?这是我目前正在做的一个例子:
"Rent Per Annum: £" + '${tenant.currentRent}'
特定问题可能至少有以下一个或多个原因:
JSP 文件不是由编辑器(Eclipse、Netbeans、Notepad 等)使用 UTF-8 编码保存的。
在通过网络发送之前,服务器没有使用 UTF-8 将 JSP 生成的字符解码为字节流。
浏览器没有使用 UTF-8 将来自网络的字节流编码为字符。
这些问题可以通过以下方式解决:
配置编辑器以使用 UTF-8 保存 JSP 文件。我不熟悉 STS,但我知道它是基于 Eclipse 的,所以它可能与标准 Eclipse 中的相同。转到Window > Preferences > General > Workspace > Text File Encoding,然后在下拉列表中选择正确的编码。
另一种方法是使用 HTML 实体£
(如其他回答者所建议的那样),这样保存 JSP 文件的编码不再相关。字符串中涉及的所有字符£
都已由基本 ASCII 编码支持(世界上使用的每个体面的字符编码基本上都“扩展”了 ASCII,因此它总是可以工作)并且 HTML 解释器(webbrower)会将 HTML 实体转换为正确的性格。
必须指示服务器使用 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>
必须指示浏览器使用 UTF-8 对 HTTP 响应进行编码。这将通过将charset
HTTP 响应Content-Type
标头的属性设置为 UTF-8 来解决,这已由导致 #2 的解决方案隐式完成。
在 HTML 中将其作为实体编写的一种可移植方式是£
或在一般情况下通过其字符代码£
或£
£。这样,您的源是纯 7 位 ASCII,因此基本上独立于编码(忽略 EBCDIC 等深奥)。另见http://www.fileformat.info/info/unicode/char/a3/index.htm