Как контролировать строковое кодирование UTF
При компиляции в javaScript компилятор dart2js преобразует строку в экранированный формат utf
\u043d\u041d...
Я не уверен, почему это сделано (оригинальный файл содержит текстовые строки, которые написаны кириллицей, но система (и, надеюсь, DartEditor) использует UTF).
Другие компиляторы (например, Closure или TypeScript) оставляют все как есть.
Мне интересно, если кто-то может объяснить:
- Почему так сделано
- Каково значение этого
- Есть ли способ отключить это
Благодарю.
2 ответа
Когда dart2js читает строку, она декодирует эту строку. Например, если ваша строка содержит \n, она декодирует ее в символ новой строки. Когда dart2js записывает строку, ему необходимо снова закодировать строки. Для простоты dart2js просто кодирует все, что не является ASCII.
Пожалуйста, отправьте отчет об ошибке, и мы посмотрим, легко ли это исправить.
В браузере (по крайней мере, в V8 в Chrome) строка представляется с 1 байтом на символ, если нет символов вне диапазона 0-255. Если за пределами этого диапазона есть только один символ, то строка представляется как 2 байта на символ. Таким образом, для небольшого числа символов кириллицы это может быть более компактным представлением с точки зрения памяти браузера.
Однако я не знаю ни о каких измерениях, и могут быть причины, почему эта теоретическая экономия места не работает на практике.