2015-01-15 53 views
1

當編譯成JavaScript的dart2js編譯字符串轉換爲轉義的UTF格式如何控制字符串編碼UTF

\u043d\u041d... 

我不知道爲什麼他做(原文件中包含的文本字符串,在西里爾文,但系統(並希望DartEditor)使用UTF)。

其他編譯器(如Closure或TypeScript)將保持原樣。

我想知道,如果有人可以解釋:

  1. 爲什麼這樣
  2. 是做什麼的這個
  3. 意義有沒有辦法關閉這個功能

謝謝。

回答

1

當dart2js讀取字符串時,它解碼該字符串。例如,如果你的字符串包含一個\ n它解碼成一個新的行字符。當dart2js寫出字符串時,它需要再次對字符串進行編碼。爲了簡單起見,dart2js簡單地編碼所有不是ASCII的東西。

請提交一份錯誤報告,我們會看看是否易於修復。

+0

好的,謝謝,提交了一份報告。 https://code.google.com/p/dart/issues/detail?id=22145 –

0

在瀏覽器中(至少在Chrome的V8中),如果沒有字符在0-255範圍之外,則每個字符表示一個字符串。如果該範圍外只有一個字符,則該字符串表示爲每個字符2個字節。所以對於少數西里爾字符來說,這可以是瀏覽器內存更緊湊的表示。

但是我不知道有任何測量結果,並且可能有理由說明這種理論空間節省在實踐中不起作用。

+0

整個字符串是西里爾字符,所以我希望有一些啓發式在玩,但... –