【问题标题】:Unicode bullet point prints as question markUnicode 项目符号点打印为问号
【发布时间】:2014-07-24 13:16:06
【问题描述】:

我正在尝试在警报中列出一些内容,当我直接在警报中使用 \u2022 时,它会正确显示项目符号,但是当我在我的 scriptlet 中这样做时:

for(int i=0; i < programs.length; i++) {
  collegesWoRecvDate += "\u2022  " + programs[i] + " \n";
}

这在我的 HTML 中:

<input type="hidden" name="collegesWoRecvDate" id="collegesWoRecvDate" value="<%=collegesWoRecvDate%>" />

这在我的 jQuery 中:

var noRecvDateArray = $('#collegesWoRecvDate').val();

var missingDates = "MESSAGE MESSAGE \n\n" +
                     noRecvDateArray + "\n" +
                    "MESSAGE MESSAGE" +
alert(missingDates);

警报打印如下:

“消息消息

?程序 1

?方案二

?程序 3

消息消息"

为什么要这样做?我如何将它改回子弹?

【问题讨论】:

  • 您确定您的网页是以 UTF-8 格式提供的吗?您正在服务器中为该标记构建一个 Unicode 字符串,但如果页面被传递给客户端,使得客户端认为它是不同的编码,您可能会遇到这个问题。
  • @Pointy 老实说,我不确定。我认为问题与此类似,但我不确定如何解决。
  • 使用您的浏览器开发人员工具检查随服务器响应发送的 HTTP 标头。 “Content-Type”标头是您要查找的内容。如果是 UTF-8,那么问题就出在了其他地方。
  • 这就是问题所在 - 它是 iso-8859-1 - 我改为 utf-8 并且它在 firefox 中工作,我会在其他浏览器中尝试。谢谢您的帮助。如果您发布答案,我将标记为已接受。 :)

标签: javascript jquery unicode


【解决方案1】:

如果您的页面从服务器传输到标记为 UTF-8 编码的浏览器,那么一切应该正常工作。 (您的服务器端模板代码看起来像 JSP,但无论它是什么,我都假设它在 Unicode 中有效。)因此,您正在构建一个正确的 Unicode 项目符号字符,并且您正在将其放入一些 HTML 中,那应该没问题。然后,在浏览器中,当您的 JavaScript 代码将其从元素中拉出时,它应该仍然是正确的。

但是,如果将页面发送到使用 UTF-8 以外的字符编码标记的浏览器,则浏览器将误解该 HTML。然后 JavaScript 将检索字符串的错位版本,您将看到您所做的效果。

您可以使用开发人员工具检查响应标头,如果不正确,请以取决于特定服务器环境的方式在您的服务器中修复它们(应该很容易)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2011-04-12
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多