В основном все проблемы с кодировками проистекают из того факта, что они смешаны и / или неверно истолкованы.
Строка (текст) - это последовательность байтов в определенном порядке.Строка кодируется с использованием некоторой конкретной кодировки, которая сама по себе не является ни правильной, ни неправильной, ни чем-либо еще.Проблема в том, что когда вы пытаетесь прочитать строку, последовательность байтов, принимая неправильную кодировку.Байты, закодированные с использованием, например, KS X 1001, просто не имеют смысла, когда вы читаете их, предполагая, что они UTF-8, вот откуда взялись вопросительные знаки.
Сайт, на котором вы получаете текстfrom отправляет его вам в каком-то определенном наборе символов, допустим, KS X 1001. Предположим, что ваш собственный сайт использует UTF-8.Встраивание потока байтов, представляющих текст в кодировке KS X 1001, в середину текста в кодировке UTF-8 и указание браузеру интерпретировать весь сайт, поскольку UTF-8 приводит к тому, что кодированный текст KS X 1001 не имеет смысла для анализатора UTF-8.
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
KSKSKSKSKSKSKSKSKSKSKSKSKSKSKSKSKSKSKSKS
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
будет отображаться как
Hey, this is UTF-8 encoded text, awesome!
???????I?have?no?idea?what?this?is???????
Hey, this is UTF-8 encoded text, awesome!
. Чтобы решить эту проблему, конвертируйте извлеченный текст в UTF-8 (или любую другую кодировку, которую вы используетена Вашем сайте).Посмотрите на заголовок Content-Type
этого другого сайта, он должен сообщить вам, в какой кодировке находится сайт. Если этого не произойдет, сделайте предположение.