Nodejs开发指南遇到的问题中文乱码

Nodejs开发指南遇到的问题中文乱码

index.ejs中有中文字符,打开首页的时候中文字符都是乱码,这个怎么更改使中文正常显示,是要在app.js中更改还是index.js。。。初学,请高手指教一下!

5 回复

Node.js 开发指南遇到的问题:中文乱码

在使用 Node.js 和 EJS 模板引擎开发 Web 应用时,你可能会遇到页面中的中文字符显示为乱码的问题。这通常是因为字符编码设置不正确导致的。以下是解决这个问题的一些步骤和示例代码。

解决方案

  1. 确保文件编码正确 确保你的 index.ejs 文件是以 UTF-8 编码保存的。大多数现代编辑器(如 VSCode)默认使用 UTF-8 编码,但最好检查一下。

  2. 设置响应头的字符编码 在 Express 应用中,你需要在发送响应之前设置正确的字符编码。可以在 app.js 中进行设置:

    // app.js
    const express = require('express');
    const app = express();
    
    // 设置字符编码为 UTF-8
    app.use((req, res, next) => {
      res.set('Content-Type', 'text/html; charset=utf-8');
      next();
    });
    
    // 其他中间件和路由配置
    
  3. EJS 配置 如果你在使用 EJS 模板引擎,可以显式地设置 EJS 的字符编码:

    // app.js
    const ejs = require('ejs');
    
    app.engine('ejs', ejs.renderFile);
    app.set('view engine', 'ejs');
    app.set('views', './views'); // 设置视图目录
    
  4. 确保数据库连接字符集正确 如果你在从数据库读取数据并显示到页面上,确保数据库连接也使用了正确的字符集。例如,在使用 MySQL 时,可以在连接字符串中指定字符集:

    const mysql = require('mysql');
    
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'mydatabase',
      charset: 'utf8mb4' // 设置字符集
    });
    
  5. 示例代码 假设你有一个简单的 Express 应用,并且 index.ejs 文件包含一些中文字符:

    <!-- index.ejs -->
    <!DOCTYPE html>
    <html lang="zh">
    <head>
      <meta charset="UTF-8">
      <title>首页</title>
    </head>
    <body>
      <h1>欢迎来到我的网站</h1>
    </body>
    </html>
    

    app.js 中进行相应的设置:

    // app.js
    const express = require('express');
    const app = express();
    const path = require('path');
    
    // 设置字符编码
    app.use((req, res, next) => {
      res.set('Content-Type', 'text/html; charset=utf-8');
      next();
    });
    
    // 设置模板引擎
    app.set('view engine', 'ejs');
    app.set('views', path.join(__dirname, 'views'));
    
    // 路由
    app.get('/', (req, res) => {
      res.render('index');
    });
    
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

通过以上步骤,你应该能够解决 Node.js 应用中的中文乱码问题。如果问题仍然存在,请检查其他可能影响字符编码的地方,如浏览器设置等。


确保你的meta里面的字符编码和文件保存的编码都是无bom的utf-8

把 js 文件保存成 utf-8 格式即可。

支持这种基本的编码习惯

在 Node.js 应用中遇到中文乱码问题通常与字符编码设置有关。在你的例子中,index.ejs 模板文件中的中文字符显示为乱码,可能是由于以下几个原因:

  1. 文件编码不一致:确保 index.ejs 文件保存为 UTF-8 编码。
  2. HTTP 响应头的字符集设置:确保 HTTP 响应头正确设置了字符集为 UTF-8。

示例代码

1. 确保文件编码

确保 index.ejs 文件使用 UTF-8 编码保存。你可以使用文本编辑器(如 VSCode)来检查和修改文件的编码格式。

2. 设置响应头字符集

在你的 Express 应用中,在发送响应之前,确保设置正确的 Content-Type 头,并包含字符集信息。

const express = require('express');
const app = express();

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    res.setHeader('Content-Type', 'text/html; charset=utf-8'); // 设置字符集
    res.render('index', { message: "你好,世界" });
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

3. EJS 渲染配置

确保在渲染 EJS 模板时没有遗漏字符集的设置。

解释

  • 文件编码:确保所有模板文件使用统一的 UTF-8 编码,以避免编码问题。
  • 响应头设置:通过 res.setHeader 方法设置响应头中的 Content-Type 字符集为 utf-8,这告诉浏览器如何解析响应体中的字符。

通过以上步骤,你应该能够解决中文乱码的问题。如果问题仍然存在,请检查是否有其他中间件或配置影响了字符编码。

回到顶部