在使用 Express.js 框架搭建 Web 应用时,我们常常需要返回 JSON 格式的数据。然而,当数据中包含中文时,有时候会出现中文乱码的问题。本文将介绍如何解决这个问题,让我们的 JSON 数据能够正确地显示中文。
原因分析
中文乱码问题的出现,通常是因为编码格式不匹配所导致的。在 Express.js 中,我们通常使用 res.json()
方法来返回 JSON 格式的数据。这个方法默认的编码格式是 UTF-8,而如果我们的数据源本身的编码格式不是 UTF-8,就会出现乱码问题。
解决方法
方法一:设置 Content-Type 头部
我们可以在返回数据之前,设置 Content-Type
头部为 application/json;charset=utf-8
,明确告诉浏览器我们返回的数据是 JSON 格式,并且编码格式是 UTF-8。这样浏览器就能正确地解析中文字符了。
示例代码:
app.get('/api/data', (req, res) => { const data = { name: '张三', age: 18 }; res.setHeader('Content-Type', 'application/json;charset=utf-8'); res.json(data); });
方法二:使用中间件
我们也可以使用一个 Express.js 中间件来解决这个问题。这个中间件会在每次请求返回数据之前,自动设置 Content-Type
头部为 application/json;charset=utf-8
。
示例代码:
// javascriptcn.com 代码示例 // 设置中间件 app.use((req, res, next) => { res.setHeader('Content-Type', 'application/json;charset=utf-8'); next(); }); // 返回数据 app.get('/api/data', (req, res) => { const data = { name: '张三', age: 18 }; res.json(data); });
总结
中文乱码是一个常见的问题,但是解决起来也很简单。我们可以通过设置 Content-Type
头部或者使用中间件来解决这个问题。希望本文能够帮助大家更好地使用 Express.js 框架。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6583c803d2f5e1655de9495e