javascript中的string與其他語言string的一些不同

作者:賀師俊
鏈接: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,儘管使用上有一些不同。

發佈了32 篇原創文章 · 獲贊 51 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章