2014-12-02 98 views
3

Javascript使用據我所知UTF-16從根本上作爲字符串的標準。使用JSON.stringify()我可以從一個對象創建一個JSON字符串。JSON.stringify()以UTF-8

那是JSON字符串UTF-16編碼嗎?

我可以將該字符串轉換(希望快)到UTF-8以節省大文件(1MB JSON)的帶寬嗎?

+2

字符串不是UTF-8或UTF-16:只有編碼產生的二進制表示是。 – 2014-12-02 15:40:51

+0

假設utf-8的空間效率更高,以至於utf-16在某些情況下不正確,高於\ 0800的代碼點將更有效地存儲在utf-16 – 2014-12-02 15:49:40

回答

1

JavaScript engines are allowed to use either UCS-2 or UTF-16.

所以,是的,JSON.stringify()將返回任何編碼您實現使用字符串的字符串。如果您想在腳本的上下文中找到更改編碼的方法,那麼它將不再是有效的JavaScript字符串。但是,爲了在網絡上對它進行序列化,我希望它能自動轉碼成HTTP請求的字符集(假設你在談論HTTP)。因此,如果您通過帶有UTF-8字符集的HTTP POST發送它,您的瀏覽器應該在發送之前透明地處理該數據的轉碼。

否則,瀏覽器真的很難與字符集處理。

+0

+1中,因爲「透明處理」。你只需要在做IO時指定一個編碼,而不是自己篡改它。 – Bergi 2015-02-25 23:12:56