2013-11-21 19 views
0

我正在運行Dart Web服務器,並在客戶端也使用Dart。網絡數據保存在文件和Postgres數據庫中。Dart Web服務器應該使用UTF-16編碼嗎?

由於dartlang是UTF-16(因爲Webkit的字符串是UTF-16),是否有意義去UTF-16招安?也就是說,而不是默認的UTF-8,進行以下本地UTF-16:

  • 文件(網頁)
  • 數據庫(網絡數據)
  • HTML編碼

似乎在數據傳輸方面會有一些小小的成功,但同時在服務器和瀏覽器中效率更高,並且偶然發生意外故障的可能性也會降低。

+0

老,但相關的:有什麼可以去錯在從UTF-8切換HTML編碼設置爲UTF-16?(http://stackoverflow.com/q/865168)絕對不是爲客戶更高效,在最壞的情況下,流量會翻倍 –

+1

@Pekka of當然,流量翻倍的最壞情況是英語。如果文件被壓縮,那麼不是很多。來自Web套接字的數據仍然是兩倍大,但數據包仍然低於512字節,所以真的沒有太大的差別。雖然我不是大師;) –

+0

如果不是b0rke,不要修復它。 –

回答

1

PostgreSQL不支持UTF-16編碼,這限制了你在談論做什麼。您可能會遇到的其中一個重大問題是UTF-16允許嵌入式空值,這會擾亂C字符串操作,而UTF-8則更加C友好。出於這個原因,說實話,我會盡可能在UTF-8上進行標準化。

+0

我確信UTF-8還允許空字節(表示本身),因爲它是7位ASCII,包括控制字符完全透明的。它可能會使用UTF-8的邏輯以其他方式對NULL字節進行編碼,但這些在技術上並非有效的UTF-8,它要求每個字符都有一個正確的編碼。請參閱http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8 – IMSoP

+0

我對UTF-8的理解是空字節可以像在C字符串中一樣使用,即作爲字符串終止符(以及是一種向後兼容的方式)。 –

+0

啊,我明白你的意思了,是的,UTF-8不會引入任何尚未存在的空字節。 OTOH,如果您正在審查所有字符串操作以正確使用Unicode,那麼使它們也可以是二進制安全的也不會太過分。 – IMSoP

相關問題