Node.js 中文乱码解决
Node.js 中文乱码解决
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编码数据说明:
- <meta charset="utf-8"/>
- //app.js
- var http = require('http');
- http.createServer(function(req, res) {
- res.writeHead(200, {'Content-Type': 'text/html'});
- res.write('<head><meta charset="utf-8"/></head>');
- res.write('<h1>Node.js</h1>');
- res.write('<b>亲爱的,你慢慢飞,小心前面带刺的玫瑰...</b>');
- res.end('<p>Hello World</p>');
- }).listen(3000);
- console.log("HTTP server is listening at port 3000.");
《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 数据来处理。
Node.js 中文乱码解决的更多相关文章
- Node.js中文乱码解决方法
- 九、Node.js中文乱码问题
解决方法: 1.确保我们的js文件保存格式是UTF-8.(可以通过记事本打开,然后另存为来查看目标js的编码格式) 2.在js文件中增加编码说明meta数据,让浏览器知道使用什么编码来解释网页. re ...
- 页面js中文乱码解决
<script src="../Content/kindeditor-4.1.5/kindeditor.js" charset="utf-8" >& ...
- js 中文乱码解决方法
bookManageAdd: function () { top.MainFrameJS.confirm = true; var action = getQueryS ...
- JS.中文乱码,Jsp\Servlet端的解决办法
JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21| 分类: Extjs | 标签:encodeuricomponent 乱码 urldecoder ...
- JS读写cookie以及中文乱码解决
本文地址:http://www.cnblogs.com/PiaoMiaoGongZi/p/4092489.html 转载请注明. Js获取所有的cookie信息: var cookiename = d ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...
随机推荐
- C++构造函数写法
笔记 class complex{ public: complex (double r = 0, double i = 0) : re(r), im(i) {} private: double re, ...
- 未能加载文件或程序集“Microsoft.CodeDom.Providers.DotNetCompilerPlatform
"/"应用程序中的服务器错误. 未能加载文件或程序集"Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Versio ...
- 统计学习1:朴素贝叶斯模型(Numpy实现)
模型 生成模型介绍 我们定义样本空间为\(\mathcal{X} \subseteq \mathbb{R}^n\),输出空间为\(\mathcal{Y} = \{c_1, c_2, ..., c_K\ ...
- 洛谷 P5902 [IOI2009]salesman(dp)
题面传送门 题意: 有 \(n\) 个展销会,每个展销会给出它的时间 \(t_i\),举办展销会的位置 \(l_i\),和参加这个展销会你能得到的收益 \(m_i\). 你现在在位置 \(s\),你可 ...
- exCRT & 骆克强乘法
exCRT & 骆克强乘法 只是丢两个板子啦. exCRT的做法就是每次拿两个方程合并成一个,合并的过程推下式子就是个 exgcd.具体可以在 zjk 的 ptt 里面找到. 先放个 $ O( ...
- 流量限制器(Flux Limiter)
内容翻译自Wikipedia Flux limiter 流量限制器(Flux limiters)应用在高精度格式中-这种数值方法用来求解科学与工程问题,特别是由偏微分方程(PDE's)描述的流体动力学 ...
- Hosts文件详解
一.缘由 关于我们工作室项目配置过程中,有一个重要但却容易被忽略的环节 - hosts文件的修改. 之前配置hosts文件的时候,只知道那么做就可以了,但并不知道其中的原因,由于开发任务的急迫,也就未 ...
- CentOS6安装Zabbix(RPM包)
1. 系统环境状态 2. 安装zabbix4.0 3. 安装mysql+apache+php环境 4.配置mysql 5.配置zabbix-server 6. 配置apache 7. web安装 1 ...
- 基于tp5的免费开源企业官网系统
基于tp5的免费开源企业官网系统 基本功能: 自定义菜单,单页 添加新闻文章前台展示 前台页面自动适配电脑与手机端等.后台模板用的是:AdminLTE 项目放在github上有兴趣开源下载看看 htt ...
- 3.Median of Two Sorted Arrays Leetcode
难度系数:5星 /*************************************************************************** 题目:有两个排好序的数组,要求 ...