Node.js 中文乱码解决---响应中文乱码
来源:互联网 发布:java.util.date怎么用 编辑:程序博客网 时间:2024/05/16 17:15
转载:http://blog.csdn.net/hongweigg/article/details/8760372
Node.js 支持中文不太好(实际上是Javascript支持),见《Node.js开发指南》。
要想Node.js正常显示中文,需要两点:1、js文件保存为unicode格式。js文件是否为unicode格式,一个简单的方法是使用记事本来判断。使用记事本打开JS文件,点菜单另存为,看编码格式是否为"UTF-8"。若不是,可使用UltraEdit工具进行转换,使用记事本也可以转换。
2、在js文件中增加编码说明meta数据,让浏览器知道使用什么编码来解释网页。
两个条件缺一不可。
一个Node.js中使用中文的例子如下,该app.js需保存为utf-8格式,同时在文中增加meta编码数据说明:
《Node.js开发指南》节选:
Node.js 不支持完整的Unicode,很多字符无法用string 表示。公平地说这不是Node.js 的缺陷,而是JavaScript 标准的问题。目前JavaScript 支持的字符集还是双字节的UCS2,即用两个字节来表示一个Unicode 字符,这样能表示的字符数量是65536。显然,仅仅是汉字就不止这个数目,很多生僻汉字,以及一些较为罕见语言的文字都无法表示。这其实是一个历史遗留问题,像2000 年问题(俗称千年虫)一样,都起源于当时人们的主观判断。最早的Unicode 设计者认为65536个字符足以囊括全世界所有的文字了,因此那个时候盲目兼容Unicode 的系统或平台(如Windows、Java 和JavaScript)在后来都遇到了问题。
Unicode 随后意识到2个字节是不够的,因此推出了UCS4,即用4 个字节来表示一个Unicode 字符。很多原先用定长编码的UCS2 的系统都升级为了变长编码的UTF-16,因为只有它向下兼容UCS2。UTF-16 对UCS2 以内的字符采用定长的双字节编码,而对它以外的部分使用多字节的变长编码。这种方式的好处是在绝大多数情况下它都是定长的编码,有利于提高运算效率,而且兼容了UCS2,但缺点是它本质还是变长编码,程序中处理多少有些不便。
许多号称支持UTF-16 的平台仍然只支持它的子集UCS2,而不支持它的变长编码部分。相比之下,UTF-8 完全是变长编码,有利于传输,而UTF-32 或UCS4 则是4 字节的定长编码,有利于计算。
当下的JavaScript 内部支持的仍是定长的UCS2 而不是变长的UTF-16,因此对于处理UCS4 的字符它无能为力。所有的JavaScript 引擎都被迫保留了这个缺陷,包括V8 在内,因此你无法使用Node.js 处理罕见的字符。想用Node.js 实现一个多语言的字典工具?还是算了吧,除非你放弃使用string 数据类型,把所有的字符当作二进制的Buffer 数据来处理。
自己出现乱码的代码修改:
//引入http模块var http=require('http');var fs = require('fs');//创建一个服务http.createServer(function(request,response){ //两个参数:请求,响应 /* * 乱码:一:请求时出现乱码 * 二:meta标签里面的编码不对 一般编码为utf-8 * */ //需要在下边接收html这个参数 var html="<h2>标题:Hello node.js!!!....</h2>" + "<a href='/add.html'>add.html</a> <a href='/remove.html'>remove.html</a> <a href='/about.html'>about.html</a>"; response.writeHead(200,{"Content-Type":"text/html;charset=utf-8"}); //发送HTTP头部 // http状态值: 200:ok //内容类型:text/plain response.write("hello Node.js....."); //发送响应数据 response.end(html);//关闭响应 //接受上边的参数}).listen(7777);//服务器监听端口
或者 :在每处汉字之前加上<meta charset='utf-8'/>
var html="<h2><meta charset='utf-8'/>标题:Hello node.js</h2>";
0 0
- Node.js 中文乱码解决---响应中文乱码
- Node.js 中文乱码解决
- Node.js 中文乱码解决
- Node.js 中文乱码解决
- js解决中文乱码
- node.js中文乱码解决之道
- 关于node.js中文乱码
- 【Node.js】使用iconv-lite解决中文乱码 (GB2312)
- js中文乱码怎么解决?
- js中文乱码怎么解决?
- js中文乱码怎么解决?
- js中文乱码怎么解决?
- 解决js 写入中文乱码
- 解决页面请求/响应中文乱码问题
- node 爬虫解决中文网页乱码
- node.js web服务器 中文乱码
- Node.js中文乱码问题解决方法
- Node.js console.log('中文') 乱码
- MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
- Linux下源码编译安装node.js
- spring注解
- mybatis 利用mysql盲注
- NOIP11.15模拟 T2 三部曲
- Node.js 中文乱码解决---响应中文乱码
- iOS10.0自带的刷新控件UIRefreshControl简介
- 奥巴马精彩演讲:我们为什么要上学
- archlinux技巧
- POJ 1861 克鲁斯卡尔算法
- UILable 高度自适应方法汇总
- linux内核升级或者patch 后修改kernel开机启动顺序
- POJ3259 Wormholes 找负环
- Codeforces 723B-Text Document Analysis