Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 和#xA3;符号显示为中间带有问号的菱形符号。_Jsp_Spring Mvc_Utf 8_Character Encoding_Spring Roo - Fatal编程技术网

Jsp 和#xA3;符号显示为中间带有问号的菱形符号。

Jsp 和#xA3;符号显示为中间带有问号的菱形符号。,jsp,spring-mvc,utf-8,character-encoding,spring-roo,Jsp,Spring Mvc,Utf 8,Character Encoding,Spring Roo,我正在创建一个webapp,其中包括向用户显示财务数据。来自英国,使用英镑作为货币,这个字符被大量使用 然而,每隔一段时间,英镑显示为中间带有问号的菱形,在网页上,它会损坏一个1字节字符串无效的CuaCter UTF-8字节1。 是否有UTF安全的方式显示标志?下面是我目前正在做的一个例子: "Rent Per Annum: £" + '${tenant.currentRent}' 将其作为实体以HTML编写的一种可移植方式是£或在一般情况下,通过其字符代码£或和#xA3>

我正在创建一个webapp,其中包括向用户显示财务数据。来自英国,使用英镑作为货币,这个字符被大量使用

然而,每隔一段时间,英镑显示为中间带有问号的菱形,在网页上,它会损坏一个1字节字符串无效的CuaCter UTF-8字节1。 是否有UTF安全的方式显示

标志?下面是我目前正在做的一个例子:

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

将其作为实体以HTML编写的一种可移植方式是
£或在一般情况下,通过其字符代码
£
和#xA3>。这样,您的源代码是纯7位ASCII,因此基本上独立于编码(忽略诸如EBCDIC等深奥的代码)。另请参见

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

  • JSP文件不是由编辑器(Eclipse、Netbeans、记事本等)使用UTF-8编码保存的

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

  • 浏览器没有使用UTF-8将网络中的字节流编码为字符

  • 这些问题可以通过以下方式解决:

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

    另一种方法是使用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>
    
    
    *.jsp
    UTF-8
    
  • 必须指示浏览器使用UTF-8对HTTP响应进行编码。这可以通过将HTTP响应
    内容类型
    头的
    字符集
    属性设置为UTF-8来解决,该解决方案已经隐式地将其设置为导致#2

  • 另见:

    UTF-8是一种编码。它完全能够对符号进行编码。“发出嘶嘶声”是不可能的。如果某件事不起作用,几乎可以肯定是因为你做错了什么事——但很难根据这么少的信息判断是什么。不是“UTF”在吹毛求疵,这意味着您实际的文本编码并不像您所说的那样是UTF-8。磅符号的值为
    U+00A3
    ,这意味着它可能是英国为数不多的需要正确编码才能显示的字符之一。你很可能输出UTF-8编码,但网页的编码设置为ISO-8859-1或其他方式。我建议将来阅读Joel Spolsky的文章,尝试以聪明和中立的方式提问,而不是做出可能只会对你不利的假设,因为这些假设实际上毫无意义(这很可能解释了你收到的所有反对票)。我已经编辑了你的问题以消除它。非常感谢你在这方面的帮助(同时整理我的问题,当时我只是感到沮丧和讽刺)