強答下吧!
我的理解,把 utf8 轉化為字串是純粹的 ASCII 碼了,可以不用考慮客戶端的編碼。如果非也,直接使用原始編碼,在 win 的 cmd (預設是 gbk 編碼)下訪問某個包含 utf8 編碼資料的介面,終端會列印什麼鬼出來呢?可以測試一下,基本就是那種一坨的效果 。
還有一點,介面的編碼並不一定 utf8,還有可能是其他編碼,世界上的編碼那麼多。只要編碼不相同,顯示效果基本都是一坨,這不是很挫嗎?
當然,把 utf8 用文字表示也是有一些缺點吧。比如:
第一點,把 utf8 轉化這種 escape 的文字會導致網路傳輸資料量變大,比如 "世" 的 utf8 編碼是 0x4e16,只佔了 2 個位元組,字串形式是 \u4e16,佔了 6 個位元組。
第二點,對於支援 utf8 的程式語言,需要花費時間進行 unescape 轉化為 utf8 或 unicode(二進位制)。當然,現在應該基本不存在不支援 utf8 的語言了。
Go 中如何將 escaped 的 uft8 轉化為真正的 unicode,貼一個示例函式,如下:
網上找了一些例子,都是透過 \u 分隔,將字串轉化為 utf8 的方式,感覺不是很通用。上面的例子是 utf8 字串形式轉化為 unicode 的程式碼。
強答下吧!
我的理解,把 utf8 轉化為字串是純粹的 ASCII 碼了,可以不用考慮客戶端的編碼。如果非也,直接使用原始編碼,在 win 的 cmd (預設是 gbk 編碼)下訪問某個包含 utf8 編碼資料的介面,終端會列印什麼鬼出來呢?可以測試一下,基本就是那種一坨的效果 。
還有一點,介面的編碼並不一定 utf8,還有可能是其他編碼,世界上的編碼那麼多。只要編碼不相同,顯示效果基本都是一坨,這不是很挫嗎?
當然,把 utf8 用文字表示也是有一些缺點吧。比如:
第一點,把 utf8 轉化這種 escape 的文字會導致網路傳輸資料量變大,比如 "世" 的 utf8 編碼是 0x4e16,只佔了 2 個位元組,字串形式是 \u4e16,佔了 6 個位元組。
第二點,對於支援 utf8 的程式語言,需要花費時間進行 unescape 轉化為 utf8 或 unicode(二進位制)。當然,現在應該基本不存在不支援 utf8 的語言了。
Go 中如何將 escaped 的 uft8 轉化為真正的 unicode,貼一個示例函式,如下:
網上找了一些例子,都是透過 \u 分隔,將字串轉化為 utf8 的方式,感覺不是很通用。上面的例子是 utf8 字串形式轉化為 unicode 的程式碼。