当我编译并运行我的打字稿并在谷歌浏览器中加载页面时,谷歌浏览器认为我的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>
编辑:我的.js文件的编码是UTF-8
我的js文件的十六进制转储。
答案 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
)将被解码为:
这些字符与屏幕截图中的字符相同。
鉴于这一切,我很确定你的greeter.js文件编码被破坏了,它有UCS2 bom FF FE
,并附加了javascript的utf8编码字节。
答案 1 :(得分:0)
我通过使用BOM编码UTF-8保存我的js文件来解决这个问题。