JSON 文件中的意外字符
unexpected characters in JSON file
问题:JSON Azure DataFactory v1 文件中的额外字符。
我有两个文件,它们是两个 Cosmos db 集合的直接副本。
我使用数据工厂 v1,选择默认值,将集合复制到 Blob 存储容器
然后使用 Azure 存储资源管理器将 JSON 文件复制到 Windows 10
桌面。
一个。使用编辑器查看文件 vi/Notrepad/Wordpad/Ultra Edit/Visual
Studio Code 他们看起来不错。
乙。当我尝试将文件读入一个简单的 Nodejs(v9) 应用程序时
我收到 JSON 解析错误:
SyntaxError: C:\Users\ricko\Desktop\whippy\MorpheusDataProduction-01052018-
20.json: Unexpected token � in JSON at positi
on 0
at JSON.parse (<anonymous>)
at Object.Module._extensions..json (module.js:654:27)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (C:\Users\ricko\Desktop\whippy\appUpdateJSON.js:5:17)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
C。单行使用 JSON http://jsonlint.com 进行验证。多行不
验证给出一个解析错误:
Error: Parse error on line 15:
..."_ts": 1512601730} { "path": "Dropbox\
----------------------^
Expecting 'EOF', '}', ',', ']', got '{'
D.同样使用节点直接读取文件然后写入记录
在控制台上,我得到了一个奇怪的双倍行距版本。我也看到了两个�
一次尝试打开大括号前面的行开头的字符。 (示例如下)
{ " S T E P _ N A M E " : " O p e n s T e s t " , " N A M E " : " A r t
h u r J o b e r t " , " D A T E " : " 1 2
1 9 / 2 0 1 6 3 : 5 7 : 4 7 P M " , " L O T " : " C G 1 5 " , " W A F
E R " : " " , " P R O C E S S _ S T E P " : "
...
我认为这是一个编码问题。开头的两个不可打印字符称为BOM,表示编码。聪明的编辑器可以处理这个问题。 UltraEdit 有一个十六进制模式,您可以在其中以十六进制形式逐字节查看 real 内容字节。 Notepad++ 非常强大,可以将编码转换为几乎所有你会使用的东西,有或没有 BOM。
C。我猜右括号和左括号之间少了一个逗号。
D.这里的编码似乎是 unicode(固定两个字节大小的字符)。用UltraEdit的十六进制模式验证一下。
我不了解 Azure,但如果您指定所需的编码,大多数编程语言都能够正确处理字节到字符的编码。当您必须将文本序列化为字节数组(用于通过类似套接字的线路发送)时,您始终必须意识到这个问题,反之亦然。
错误是由于 Unicode BOM(字节顺序标记)是文件开头的隐藏字符。
可以在这里找到答案:
node.js windows 上的 utf8 编码文件读取文件错误
问题:JSON Azure DataFactory v1 文件中的额外字符。
我有两个文件,它们是两个 Cosmos db 集合的直接副本。
我使用数据工厂 v1,选择默认值,将集合复制到 Blob 存储容器
然后使用 Azure 存储资源管理器将 JSON 文件复制到 Windows 10
桌面。
一个。使用编辑器查看文件 vi/Notrepad/Wordpad/Ultra Edit/Visual Studio Code 他们看起来不错。
乙。当我尝试将文件读入一个简单的 Nodejs(v9) 应用程序时 我收到 JSON 解析错误:
SyntaxError: C:\Users\ricko\Desktop\whippy\MorpheusDataProduction-01052018-
20.json: Unexpected token � in JSON at positi
on 0
at JSON.parse (<anonymous>)
at Object.Module._extensions..json (module.js:654:27)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (C:\Users\ricko\Desktop\whippy\appUpdateJSON.js:5:17)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
C。单行使用 JSON http://jsonlint.com 进行验证。多行不 验证给出一个解析错误:
Error: Parse error on line 15:
..."_ts": 1512601730} { "path": "Dropbox\
----------------------^
Expecting 'EOF', '}', ',', ']', got '{'
D.同样使用节点直接读取文件然后写入记录 在控制台上,我得到了一个奇怪的双倍行距版本。我也看到了两个� 一次尝试打开大括号前面的行开头的字符。 (示例如下)
{ " S T E P _ N A M E " : " O p e n s T e s t " , " N A M E " : " A r t
h u r J o b e r t " , " D A T E " : " 1 2
1 9 / 2 0 1 6 3 : 5 7 : 4 7 P M " , " L O T " : " C G 1 5 " , " W A F
E R " : " " , " P R O C E S S _ S T E P " : "
...
我认为这是一个编码问题。开头的两个不可打印字符称为BOM,表示编码。聪明的编辑器可以处理这个问题。 UltraEdit 有一个十六进制模式,您可以在其中以十六进制形式逐字节查看 real 内容字节。 Notepad++ 非常强大,可以将编码转换为几乎所有你会使用的东西,有或没有 BOM。
C。我猜右括号和左括号之间少了一个逗号。
D.这里的编码似乎是 unicode(固定两个字节大小的字符)。用UltraEdit的十六进制模式验证一下。
我不了解 Azure,但如果您指定所需的编码,大多数编程语言都能够正确处理字节到字符的编码。当您必须将文本序列化为字节数组(用于通过类似套接字的线路发送)时,您始终必须意识到这个问题,反之亦然。
错误是由于 Unicode BOM(字节顺序标记)是文件开头的隐藏字符。
可以在这里找到答案: node.js windows 上的 utf8 编码文件读取文件错误