从js对象打印Biórn而不是Biórn

时间:2016-04-07 18:26:39

标签: javascript jquery html

我认为我缺乏正确的词汇表能够正确地陈述这个问题。但我已经搜索了我能想到的一切,包括“javascript object ascii”,“javascript object to unicode”,但我正在寻找的答案不会显示。

我的问题是我有一个看起来像这样的JavaScript对象:

{
    Book: 'Teacup',
    Type: 'Secondary',
    Name: 'Biórn',
    Age: '257',
    Race: 'Dwarf',
    Gender: 'Male'
}

当我使用以下功能将其打印出来时:

for (var prop in item) { // item is my object
    var lineItem = $('<td/>');
    lineItem.text(item[prop]);
    lineItems.push(lineItem);
};

它看起来像这样: TeacupSecondaryBiørn257矮人男

我该如何解决?

2 个答案:

答案 0 :(得分:2)

字符Ã后跟一些其他奇怪的字符是典型的指示,您提交的文件具有UTF-8编码但被解释为其他内容,通常是latin-1(也称为ISO-8859-1)。在UTF-8中,某些字符占用多个字节。在这种情况下,两个字节表示UTF-8中的字符ó,但表示拉丁-1中的两个字符³。

Notepad ++非常智能,可以识别正确的编码,可能是通过扫描文件的一部分来获取UTF-8字符。但浏览器似乎无法确定正确的编码,除非该文件包含BOM

如评论中所述,您可以使用HTML meta tag明确设置编码。

答案 1 :(得分:0)

有两件事可以解决这个问题。我认为这与javascript从对象中获取数据的方式有关,但正如@CBroe指出的那样,它与我的数据文件的编码有关。

因此我的第一个解决方案是重新保存包含该对象的文件,确保它是UTF-8格式。我通过在记事本中打开它来按下&#34;另存为&#34;并选择&#34; UTF-8&#34;在&#34;编码&#34;旁边的下拉列表中。

这解决了这个问题,但这也意味着我必须为我想要创建的每个文件执行此操作。 @Forcefield建议我检查我的HTML页面的字符集,如此链接中所述:http://www.w3schools.com/html/html_charset.asp

简而言之,它表示HTML页面的字符集是通过在页面<head> - 标记内使用元标记来设置的。

对于HTML 4:

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

和HTML 5:

<meta charset="UTF-8">

使用此选项也适用于我。

对于任何网络开发人员来说,这应该是基本的知识,但是我已经有一段时间了,因为我从头开始创建一个页面并且找到这个简单的答案并不像它应该的那样容易。我希望这对其他人也有帮助。