javascript中的string与其他语言string的一些不同
2016-05-12 09:43
295 查看
作者:贺师俊
链接:https://www.zhihu.com/question/26121387/answer/32188941
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
注意确保你的源代码文件是utf-8正确编码。
JavaScript的字符串本来就是unicode的,只要encode就好了。你上面写的代码是得到了字符串的utf-8字节后按照gbk解码,得到的必然是乱码字符串。
补充:
许多同学对字符串理解有误。PHP的字符串不是真正的“字符”串,而是“字节”串。在nodejs里(以及在java、C#等现代语言中),字符串是真的unicode字符串。(内部以utf-16编码保存,虽然严格意义上其实也存在代理对这样的问题,但是绝大多数情况下我们只用基本平面内的字符,所以算是比较好的性能和功能的折中。)
因此JavaScript中不存在gbk字符串或utf8字符串这样的东西(可以认为只有utf-16的字符串)。你可以认为php中的所谓字符串等价于nodejs的 Buffer,尽管使用上有一些不同。
链接:https://www.zhihu.com/question/26121387/answer/32188941
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
var biz_content = "欢迎关注!"; var gbkBytes = iconv.encode(biz_content,'gbk'); res.setHeader('Content-Type', 'text/html; charset=gbk') res.end(gbkBytes)
注意确保你的源代码文件是utf-8正确编码。
JavaScript的字符串本来就是unicode的,只要encode就好了。你上面写的代码是得到了字符串的utf-8字节后按照gbk解码,得到的必然是乱码字符串。
补充:
许多同学对字符串理解有误。PHP的字符串不是真正的“字符”串,而是“字节”串。在nodejs里(以及在java、C#等现代语言中),字符串是真的unicode字符串。(内部以utf-16编码保存,虽然严格意义上其实也存在代理对这样的问题,但是绝大多数情况下我们只用基本平面内的字符,所以算是比较好的性能和功能的折中。)
因此JavaScript中不存在gbk字符串或utf8字符串这样的东西(可以认为只有utf-16的字符串)。你可以认为php中的所谓字符串等价于nodejs的 Buffer,尽管使用上有一些不同。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享