’
(код кодировки 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.
Это означает, что ваши исходные данные проходят две конвертации кодировки перед отправкой в браузер:
’
(U+2019
) сначала кодируется как байты UTF-8: 0xE2 0x80 0x99
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.