Почему мой urlencode()
производить что-то другое, чем я ожидал?
Возможно, мои ожидания ошибочны, но тогда я был бы еще более озадачен.
пример
urlencode("ä");
expectations = returns %C3%A4
reality = returns %E4
Где я ошибся в своих ожиданиях? Кажется, это связано с кодированием. Но я не очень знаком с тем, что я должен делать / использовать.
Должен ли я что-то изменить на своем сервере, чтобы функция использовала правильную кодировку?
urlencode
кодирует необработанные байты в вашей строке в процентное представление. Если вы ожидаете %C3%A4
это означает, что вы ожидаете UTF-8-байтовое представление «ä». Если вы получаете %E4
это означает, что ваша строка на самом деле вместо этого кодируется в ISO-8859-1.
Кодируйте вашу строку в UTF-8, чтобы получить ожидаемый результат. Как это сделать, зависит от того, откуда эта строка. Если это строковый литерал в вашем файле исходного кода, сохраните файл как UTF-8 в вашем текстовом редакторе. Если это происходит из базы данных, см. UTF-8 полностью.
Для получения дополнительной информации см. Что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом.
Других решений пока нет …