77

我刚刚从 d3js.org 下载了 D3.js(链接到 zip 文件),解压缩它,并在以下 HTML 页面中引用它:

<html>
<head>
<title>D3 Sandbox</title>
<style>
</head>
<body>
<script src="/d3.v3.js"></script>
</body>
</html>

但是当我加载这个页面时,我的控制台(在 Chrome 中)给了我这个错误:

Uncaught SyntaxError: Unexpected token ILLEGAL: line 2

它不喜欢文件开头的 pi 和 e 符号。Errrr ...我该怎么办?我正在使用 python 的 SimpleHTTPServer 提供文件。

更新:是的,我知道我可以链接到 CDN 版本,但我更愿意在本地提供文件。

4

5 回答 5

136

尝试在 HTML 宿主文档上指定 UTF-8 字符集:

<meta http-equiv="content-type" content="text/html; charset=UTF8">

D3 在非 UTF8 文档中包含 UTF-8 符号(如 π)无效。

于 2013-03-30T09:42:32.780 回答
9

这听起来像是编码的问题。我推荐每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最小值(没有借口!)。尽管标题有些居高临下,但它包含一些非常有用的信息。具体来说,听起来您的服务器正在d3.v3.js使用错误的编码提供文件。

于 2013-03-06T01:03:30.563 回答
6

添加 'charset="utf-8"'

<script src="/d3.v3.js" charset="utf-8"></script>
于 2014-08-24T04:53:34.440 回答
5

我尝试在文档和脚本标签本身中设置字符集,但 Chrome 似乎并不关心。不确定我是否做错了什么。

我确实通过首先使用 --ascii-only 选项通过 uglify 运行它找到了成功。

更新:原来我在 Chrome 中的 View->Encoding 设置不是自动检测,而是一些西方编码。不知道为什么,但改变它解决了问题。荒谬的是,该设置会胜过脚本标签上的字符集属性。考虑到用户可能处于相同的情况并且无法弄清楚,我仍然会使用 uglify 来确保成功。

于 2014-09-25T20:20:53.887 回答
0

检查所有字符串连接之间是否有加号,如果没有,将生成此错误。

于 2015-08-01T03:24:42.660 回答