我有一个Json文件,我保存了一些中文文本。 当我在我的pdfkit项目中打印它时,这是结果= 蓝色的thext写在代码中并且有效。 红色是通过Json文件得到的,并且不起作用(如果我将json文件更改为普通字符工作)
答案 0 :(得分:0)
你好我在使用require读取json文件时有同样的问题,我改为使用fs.readFile并且对我有用,检查代码:
fs.readFile('./app/config/language-base.json', 'utf8', function (err, data) {
//var lang = JSON.parse(data.toString('utf8').replace(/^\uFEFF/, ''));
var lang = JSON.parse(data);
lang.languages.forEach(function(ln, i){
var source = {};
Object.keys(lang.source).forEach(function(word, i){
gutil.log('Generating word ', gutil.colors.magenta(word), "for language ", gutil.colors.red(ln));
source[word] = lang.source[word][ln];
gutil.log('Current word ', gutil.colors.blue(source[word]));
});
var source = JSON.stringify(source);
var path = './app/locales/'+ln+".json";
fs.writeFileSync(path, source, 'utf8');
});
});
希望这能帮到你!!
答案 1 :(得分:0)
使用fs读取包含中文圣经文本的JSON文件时,我刚刚遇到了这个(或类似问题)。我的代码是:
var bible = fs.readFileSync('./files/bible.json', 'utf8');
var jsonBible = JSON.parse(bible);
JSON无法解析从文件读取的内容。错误消息是: SyntaxError:意外令牌-JSON中的位置0
然后我尝试将'utf8'更改为'utf16le'。错误消息然后更改为: SyntaxError:JSON在位置0处出现意外令牌
事实证明,文件末尾存在一些无法打印的字符,导致JSON解析文件内容时出现问题。使用trim()方法删除了该字符,然后JSON能够解析文件。所以最终的工作代码是:
var bible = fs.readFileSync('./files/bible.json', 'utf16le').trim();
var jsonBible = JSON.parse(bible);