【问题标题】:Javascript file content is getting encoded in front endJavascript 文件内容在前端被编码
【发布时间】:2024-01-24 05:52:02
【问题描述】:

在我的 javascript 文件中,每个货币符号都有其十进制代码的映射,如下所示:

var currency_symbols = {
    'EUR':{
        'symbol':'€', // Euro
        'isPrefix':true
    },
    'CRC':{
        'symbol':'₡', // Costa Rican Colón
        'isPrefix':true
    },
    'GBP':{
        'symbol':'₤', // British Pound Sterling
        'isPrefix':true
    },
    'ILS':{
        'symbol':'₪', // Israeli New Sheqel
        'isPrefix':true
    },
    'INR':{
        'symbol':'₹', // Indian Rupee
        'isPrefix':true
    },
    'KRW':{
        'symbol':'₩', // South Korean Won
        'isPrefix':true
    },
    'NGN':{
        'symbol':'₦', // Nigerian Naira
        'isPrefix':true
    },
    'PHP':{
        'symbol':'₱', // Philippine Peso
        'isPrefix':true
    },
    'PYG':{
        'symbol':'₲', // Paraguayan Guarani
        'isPrefix':true
    },
    'UAH':{
        'symbol':'₴', // Ukrainian Hryvnia
        'isPrefix':true
    },
    'VND':{
        'symbol':'₫', // Vietnamese Dong
        'isPrefix':true
    }
};

我将使用它来以不同的格式显示货币。当我加载我的 web 应用程序时,javascript 文件被正确加载并完美呈现。 但是当我在 iFrame 中加载我的应用程序时,代码符号十进制值变为如下:

'EUR':{
        'symbol':'€', // Euro
        'isPrefix':true
    },
    'CRC':{
        'symbol':'₡', // Costa Rican Colón
        'isPrefix':true
    },
    'GBP':{
        'symbol':'£', // British Pound Sterling
        'isPrefix':true
    },
    'ILS':{
        'symbol':'₪', // Israeli New Sheqel
        'isPrefix':true
    },
    'INR':{
        'symbol':'₹', // Indian Rupee
        'isPrefix':true
    },
    'JPY':{
        'symbol':'Â¥', // Japanese Yen
        'isPrefix':true
    },
    'KRW':{
        'symbol':'â‚©', // South Korean Won
        'isPrefix':true
    },
    'NGN':{
        'symbol':'₦', // Nigerian Naira
        'isPrefix':true
    },
    'PHP':{
        'symbol':'₱', // Philippine Peso
        'isPrefix':true
    },
    'PLN':{
        'symbol':'zł', // Polish Zloty
        'isPrefix':true
    },
    'PYG':{
        'symbol':'₲', // Paraguayan Guarani
        'isPrefix':true
    },
    'THB':{
        'symbol':'฿', // Thai Baht
        'isPrefix':true
    },
    'UAH':{
        'symbol':'â‚´', // Ukrainian Hryvnia
        'isPrefix':true
    },
    'VND':{
        'symbol':'â‚«', // Vietnamese Dong
        'isPrefix':true
    }

因此无法正确呈现货币代码,如何处理?这个问题的根本原因是什么。这是预期的行为吗?解决此问题的最佳做法是什么。

非常感谢大家的建议

【问题讨论】:

  • 在编辑器中使用 UTF 编码并确保 charset 具有相同的编码。
  • @dfsq 我没听懂,我使用的是 Atom 编辑器。您可以从我的解释中看到,只有当我在 iframe 中加载应用程序时才会出现问题,否则它工作正常。问题中突出显示的部分。
  • 使用'symbol':'\u8364' 代替'symbol':'€'。 (你的 cmets 也放错了位置。它们属于货币,而不是符号。我建议你也将它们设为属性而不是评论。)

标签: javascript angularjs iframe character-encoding ascii


【解决方案1】:

如果你在 IFrame 中定义了内容的编码。

解释(来源:IFrame Encoding):

iframe 内部的页面完全独立于“外部” 页面,它可以有你想要的任何字符集。换句话说,每个 页面应该指定它自己的字符集(并确保它实际上是 编码在该字符集中)。

所以你可以像我猜的那样在 IFrame 中定义编码。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        Test
    </body>
</html>

这里是工作示例,内容渲染良好,如果您仍然遇到问题,请使用下面的 JSFiddle 并分享回来。

JSFiddle Demo

【讨论】:

    最近更新 更多