想问个Node.js运行时编码的问题

cheery_an 2016-11-03 10:10:30
我使用Node.js把某个目录作为可运行目录的时候,ANSI编码的html文件可以被正常解析为html,而Utf-8格式的html文件,他却直接把文件的内容给显示出来了,没有进行html解析。能给个解决办法吗?
比如我运行下面的html文件的时候,

<!DOCTYPE html>
<html class="root61">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script src="functions.js"></script>
<title></title>
</head>
<body>
内容
</body>

当html文件存储为ANSI时,可以正常解析,浏览器显示出“内容”两个字,而当html文件存储为uft-8时,浏览器却把这个文件的内容给显示出来了。
我是使用 node hellWeb.js html目录 来运行的,helloWeb.js如下:

'use strict';

var
fs = require('fs'),
url = require('url'),
path = require('path'),
http = require('http');

// 从命令行参数获取root目录,默认是当前目录:
var root = path.resolve(process.argv[2] || '.');

console.log('Static root dir: ' + root);

// 创建服务器:
var server = http.createServer(function (request, response) {
// 获得URL的path,类似 '/css/bootstrap.css':
var pathname = url.parse(request.url).pathname;
// 获得对应的本地文件路径,类似 '/srv/www/css/bootstrap.css':
var filepath = path.join(root, pathname);
// 获取文件状态:
fs.stat(filepath, function (err, stats) {
if (!err && stats.isFile()) {
// 没有出错并且文件存在:
console.log('200 ' + request.url);
// 发送200响应:
response.writeHead(200);
// 将文件流导向response:
fs.createReadStream(filepath).pipe(response);
} else {
// 出错了或者文件不存在:
console.log('404 ' + request.url);
// 发送404响应:
response.writeHead(404);
response.end('404 Not Found');
}
});
});

server.listen(8080);

console.log('Server is running at http://127.0.0.1:8080/');
...全文
134 点赞 收藏 7
写回复
7 条回复
cheery_an 2016年11月07日
我的html有什么问题啊?都是最简单的形式。还有你的测试代码发来看下吧?
回复 点赞
cheery_an 2016年11月07日
今天运行了,真的如4楼那样,可是真的一开始是我最开始描述那样。不纠结了,反正可以指定编码。
回复 点赞
当作看不见 2016年11月07日

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Socket.IO</title>
	</head>
	<body>
		  <h1>Socket.IO Examole</h1>
 		
	</body>
</html>

html的测试代码, node 的代码和你帖的一样,一字未动
回复 点赞
当作看不见 2016年11月06日
楼主,在下亲测了一下,无论是什么编码格式都没有问题,编码格式乱写都没有这个问题。不知道楼主发生了什么。 改变编码格式只会出现乱码而已,楼主的html有不少问题。改正再试一下吧,才刚看完node.js入门经典,只能帮测试。
回复 点赞
cheery_an 2016年11月04日
可能用的人比较少
回复 点赞
当作看不见 2016年11月03日
引用 1 楼 cheery_an 的回复:
那有人用node.js么
有呀,刚看了两天,会输出hello world了估计再过个一年半载就能试试水了
回复 点赞
cheery_an 2016年11月03日
那有人用node.js么
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告