Angular Universal: крюк жизненного цикла, когда окно api становится доступным

(код кодировки Unicode U+2019 RIGHT SINGLE QUOTATION MARK) кодируется в UTF-8 в виде байтов:

0xE2 0x80 0x99.

’ (кодовые страницы Unicode U+00E2 U+20AC U+2122) кодируется в UTF-8 в виде байтов:

0xC3 0xA2 & nbsp; 0xE2 0x82 0xAC & nbsp; 0xE2 0x84 0xA2.

Это байты, которые ваш браузер фактически получает, чтобы создать ’ при обработке как UTF-8.

Это означает, что ваши исходные данные проходят две конвертации кодировки перед отправкой в ​​браузер:

  1. Символ источника (U+2019) сначала кодируется как байты UTF-8: 0xE2 0x80 0x99
  2. эти отдельные байты затем были неправильно интерпретированы и декодированы в Unicode codepoints U+00E2 U+20AC U+2122 одним из кодировок Windows-125X (1252, 1254, 1256 и 1258), все карты 0xE2 0x80 0x99 - U+00E2 U+20AC U+2122 ), а затем эти кодовые точки кодируются как байты UTF-8: 0xE2 -> U+00E2 -> 0xC3 0xA2 0x80 -> U+20AC -> 0xE2 0x82 0xAC 0x99 -> U+2122 - > 0xE2 0x84 0xA2

Вам нужно найти, где выполняется дополнительное преобразование на шаге 2.

1
задан inorganik 5 March 2019 в 16:42
поделиться

1 ответ

Я протестировал локальный запуск моего сервера узлов и обнаружил, что ngOnInit() является подходящим местом для запуска кода навигатора. ngOnInit() будет вызываться на стороне сервера, но будет снова вызываться в браузере, поэтому вам нужно проверить правдивость навигатора:

ngOnInit() {
  if (this.window && this.window.navigator) {
    // do stuff
  }
}

Стоит отметить, что я использую оконный провайдер получить доступ к окну -

constructor(@Inject(WINDOW) private window: any) { }
0
ответ дан inorganik 5 March 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: