javascript中的string与其他语言string的一些不同

来源:互联网 发布:巨牌一搜网络一搜同志 编辑:程序博客网 时间:2024/06/10 16:30

作者:贺师俊
链接: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,尽管使用上有一些不同。

0 0
原创粉丝点击