将 XML 转换为 JSON 时如何解决编码问题?
Posted
技术标签:
【中文标题】将 XML 转换为 JSON 时如何解决编码问题?【英文标题】:How to fix encoding problem when convert XML to JSON? 【发布时间】:2021-06-23 14:17:27 【问题描述】:我有一个 xml 文件。我需要将xml文件转换为json格式并用节点js写成html。
下面的 XML 文件
<?xml version="1.0" encoding="windows-1251" ?>
<ROWDATA>
<ROW>
<REG1_CODE>02</REG1_CODE>
<REG1>Вінницька обл.</REG1>
<REG2_CODE>19</REG2_CODE>
<REG2>Тиврівський р-н</REG2>
<REG3_CODE>001</REG3_CODE>
<REG3>с. Борсків</REG3>
</ROW>
</ROWDATA>
我将xml转换为json的代码
const fs = require('fs')
const xml2js = require('xml2js')
const parser = new xml2js.Parser()
const http = require('http')
const util = require('util')
function onRequest(request, response)
response.writeHead(200, 'Content-Type' : 'text/plain;');
fs.readFile('regions.xml', null, function (error, data)
parser.parseString(data, (err, result) =>
if (error)
response.writeHead(404);
response.write('Bla bla');
else
response.write(util.inspect(result, false, null, true))
response.end();
)
)
http.createServer(onRequest).listen(8000)
此代码输出。
ROWDATA:
ROW: [
REG1_CODE: [ [32m'02'[39m ],
REG1: [ [32m'ВіпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ.'[39m ],
REG2_CODE: [ [32m'19'[39m ],
REG2: [ [32m'пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ-пїЅ'[39m ],
REG3_CODE: [ [32m'001'[39m ],
REG3: [ [32m'пїЅ. пїЅпїЅпїЅпїЅпїЅпїЅ'[39m ]
,
如何解决这个编码问题?
【问题讨论】:
【参考方案1】:你可以试试fs.readFile(filepath, encoding: 'utf-8' , function (err, data) )
吗?
此处记录了其他选项https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback
【讨论】:
以上是关于将 XML 转换为 JSON 时如何解决编码问题?的主要内容,如果未能解决你的问题,请参考以下文章
将 XML 转换为 JSON 和 Vice Versa,以及如何在发出 XML 请求时识别 REST 端点?
xml转换为json格式时,如何将指定节点转换成数组 Json.NET