node.js从JSON文件中获取中文字符

时间:2016-05-13 14:57:08

标签: json node.js character

我有一个Json文件,我保存了一些中文文本。 当我在我的pdfkit项目中打印它时,这是结果= enter image description here 蓝色的thext写在代码中并且有效。 红色是通过Json文件得到的,并且不起作用(如果我将json文件更改为普通字符工作)

2 个答案:

答案 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);