如何修复我的 jsp 页面中变为 (¤) 的美元符号?

how to fix dollar symbols ($) that change to (¤) in my jsp page?

我有一个代码在 jsp 页面上显示 $168,00 符号,但它变成了 €168,00 符号,但是当我尝试 运行 我的项目使用 public IP 或在其他客户端使用我的IP,$符号没有变成¤,​​没有问题

我试过使用 type="currency" 和 currencySymbol="$" 它有效,但是当我使用 currencySymbol="$" 时它会影响我使用的函数的结果。以前我只使用 type="currency" 并且它有效,但是当我提交我的项目时 $ 符号更改为 ¤

但在其他浏览器中它运行良好 Mozilla ($168,00)

我正在使用 Google Chrome 版本 76.0.3809.132(官方构建)(64 位)

我在 headers 中使用

声明字符编码
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@taglib uri="http://sargue.net/jsptags/time" prefix="javatime"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
value='<fmt:formatNumber type="currency" value="${project.Amount}" minFractionDigits="2" maxFractionDigits="2" />'

缺少 character-encoding 声明

您可能忽略了为 JSP 页面指定字符编码。

如果您未能在页面中指定字符编码 headers,Web 浏览器将被迫猜测或回退到某些默认值。因此,您的结果会因浏览器和用户在该浏览器中的设置而异。字符可能会被误解为其他字符。

¤ 对比 $

currency sign character (¤) replaces the dollar sign ($) in some national variants of ASCII。所以你看到的可能是一个特性,而不是一个错误。

在 Unicode 中,使用:

  • 十六进制 24,十进制 36,美元符号。
  • 十六进制 A4,十进制 164,用于货币符号字符。

解决方法:指定你的字符编码

解决方法很简单,应该是你所有网络工作的正常操作流程:

  • 为您的网页内容选择 character encoding
  • 编辑该内容的源代码时使用该字符编码。
  • 正确声明该字符编码:Web 服务器设置,headers 您的页面。
  • 严格验证您的内容的所有部分都包含源代码,其中的字符确实按照声明的编码进行了编码。

请确保您的 toolchain are fighting you, using and/or declaring some other encoding. Use a “developer edition” of a powerful web browser such as Firefox 没有工具可以检查您生成的页面内容。

UTF-8

如今,go-to 字符编码为 UTF-8。这种编码可以使用 Unicode 中定义的 110,000 多个字符中的任何一个来表示文本。每个角色都有一个永久分配的编号,因此您不会再有惊喜。

UTF-16 is a more space-efficient encoding for content made heavily of CJK 文字。但是各种实现中的安全缺陷导致这种编码不再被推荐用于 Web 工作。

资源

如果您不了解字符集和字符编码,请参阅:

搜索 Stack Overflow 了解更多信息,因为这 topic has been addressed many many times 已经存在。

指定你的人类语言

类似地,您的网络内容可以而且应该 declare the human language(英语、法语、斯瓦希里语等)用于编写其内容。