Почему loadURIWithFlags не использует кодировку, которую я передаю ей? - PullRequest
0 голосов
/ 13 августа 2010

У меня есть HTML-документ, хранящийся в файле с кодировкой UTF-8, и я хочу, чтобы мое расширение отображало этот файл в браузере, поэтому я вызываю loadURIWithFlags('file://' + file.path, flags, null, 'UTF-8', null);, но вместо этого он загружается как ISO-8859-1UTF-8.(Я могу сказать, потому что ISO-8859-1 выбран в меню «Вид»> «Кодировка символов», и потому что символы без пробелов отображаются в виде Â, за которым следует пробел. Если я переключаюсь на UTF-8 с помощьюВ меню «Кодировка символов» все выглядит правильно.)

Я пытался включить в флаги LOAD_FLAGS_BYPASS_CACHE и LOAD_FLAGS_CHARSET_CHANGE, но это, похоже, не имело никакого эффекта.Я также проверил, что автоопределение было отключено, так что это не было проблемой.Добавление <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> к документу, похоже, решило проблему, но я ожидаю, что использование аргумента 'charset' loadURIWithFlags должно работать так же хорошо, поэтому мне интересно, сделал ли я что-то не так в своей первоначальной попытке.

1 Ответ

1 голос
/ 13 августа 2010

Вы сделали правильно, и единственное решение - включить информацию о кодировке в документ, потому что, если вы полагаетесь только на заголовки HTTP, вы не сможете загрузить документ при сохранении документа на диск (потому что не существует заголовки для файлов).

Если вы сохраняете файл, вы можете добавить UTF-8 BOM в файл, чтобы обеспечить его правильную загрузку Firefox или другими приложениями.

...