Node.js中使用fs.readFile设置utf8仍乱码,求助解决方法
Node.js fs.readFile读取login.html乱码问题排查与解决
先检查login.html文件本身的编码:你设置了utf8读取,但如果文件实际是GBK/GB2312这类编码保存的,读出来必然乱码。用VS Code、Notepad++这类编辑器打开文件,查看状态栏的编码标识,直接改成UTF-8重新保存。
确认readFile的编码参数是否正确:确保代码里是
fs.readFile('./login.html', 'utf8', (err, data) => { ... }),或者用配置对象{ encoding: 'utf8' },别写错成其他格式(虽然Node.js兼容utf-8,但统一写法更稳妥)。检查响应头的Content-Type设置:就算读取到了正确内容,返回给客户端时没指定字符集,浏览器可能用默认编码解析导致乱码。一定要加上:
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.end(data);
排查BOM头问题:部分编辑器保存UTF-8时会自动加上BOM头,Node.js读取时可能出现异常。用VS Code选择"UTF-8 without BOM"格式重新保存login.html试试。
用同步读取排除异步干扰:临时换成
fs.readFileSync('./login.html', 'utf8')读取并打印内容,如果还是乱码,说明问题出在文件本身或编码设置,和异步逻辑无关。
内容的提问来源于stack exchange,提问作者xiaofan Mao
相关产品推荐
相关产品推荐

