Chrome认为我的JavaScript是普通话

时间:2016-06-29 17:28:07

标签: javascript html google-chrome typescript

当我编译并运行我的打字稿并在谷歌浏览器中加载页面时,谷歌浏览器认为我的javascript是普通话。

这是我的.ts文件:

class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
    this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}


interface Person {
firstName: string;
lastName: string;
}


function greeter(person: Person) {
return "Hello, " + person.firstName + person.lastName;
}

var user = new Student("Mike", "A", "Harv");

document.body.innerHTML = greeter(user);  

这是我的.js档案:

var Student = (function () {
function Student(firstName, middleInitial, lastName) {
    this.firstName = firstName;
    this.middleInitial = middleInitial;
    this.lastName = lastName;
    this.fullName = firstName + " " + middleInitial + " " + lastName;
}
return Student;
}());
function greeter(person) {
return "Hello, " + person.firstName + person.lastName;
}
var user = new Student("Mike", "A", "Harv");
document.body.innerHTML = greeter(user);

这是我的.html文件:

<!DOCTYPE html>
<html>
<head><title>TypeScript Greeter</title></head>
<body>
    <script src="greeter.js"></script>
</body> 
</html>

enter image description here

enter image description here

编辑:我的.js文件的编码是UTF-8

enter image description here

我的js文件的十六进制转储。

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您将utf-8(不带bom)编码的greeter.js文件解码为UCS2-LE,则会显示您看到的普通话字母。我试图说服Chrome将utf8编码的文件解码为ucs2le,但我没有成功。它看起来包括chrome在内的每个程序,只有在文件开头有正确的BOM时才会使用UCS2-LE。以下字节FF FE 76 61 72 20 53 74 ...(这些字节与hexdump中的字节相同,FF FE prepended)将被解码为:

enter image description here

这些字符与屏幕截图中的字符相同。

鉴于这一切,我很确定你的greeter.js文件编码被破坏了,它有UCS2 bom FF FE,并附加了javascript的utf8编码字节。

答案 1 :(得分:0)

我通过使用BOM编码UTF-8保存我的js文件来解决这个问题。