我有一个字符串,它在Javascript中被序列化为JSON,然后反序列化为Java.
看起来如果字符串包含度数符号,那么我就会遇到问题.
我可以帮助找出应该责怪的人:
这是JSDB中发生的事情:
js>s='15\u00f8C'
15°C
js>JSON.stringify(s)
"15°C"
Run Code Online (Sandbox Code Playgroud)
我希望"15\u00f8C'这让我相信Spidermonkey的JSON实现没有做正确的事情...除了JSON主页的语法描述(是规范吗?)说char可以是
any-Unicode-character- except - " - 或 - \ - or- control-character"
所以也许它按原样传递字符串而不将其编码为\ u00f8 ...在这种情况下我会认为问题出在gson库中.
有人可以帮忙吗?
我想我的解决方法是使用不同的JSON库,或者在调用后自己手动转义字符串JSON.stringify()- 但如果这是一个错误,那么我想提交错误报告.
根据这个问题, JSON是使用代理对自动编写的.
但是,这不是我的经验.
使用Node 6.9.2和以下代码,我的文件仍显示未使用代理项对编码的字符.
const fs = require('fs')
const infile = fs.readFile('raw.json', 'utf8', (err, data) => {
if (err) {
throw err
}
data = JSON.stringify(data)
fs.writeFile('final.json', data, 'utf8', (err) => {
if (err) {
throw err
}
console.log('done')
})
})
Run Code Online (Sandbox Code Playgroud)
在我的编辑器中,它必须具有良好的unicode和使用以及具有这些字符的字形的字体,该文件的内容raw.json具有诸如"?"
该角色仍然出现final.json(没有变化).
此外,我试过编码切换utf8到utf16le了正在写入的文件,但没有任何改变.
有没有办法强制使用代理对?