RFC 3986 заявляет, что новая схема URI должна быть закодирована до UTF-8 сначала до кодирования процента. Однако это не относится к предыдущим версиям URI.
Можно ли предположить, что все многобайтовые, закодированные в процентах URI превращаются в кодированную строку UTF-8 после прохождения через urldecode()
?
Например, если содержимое $_SERVER['REQUEST_URI']
процитировано в процентах как таковое:
/b%C3%BCch/w%C3%B6rterb%C3%BCch
После передачи этой строки в urldecode()
у меня должна быть многобайтовая строка. Но как узнать, в какой кодировке строка? В приведенном выше примере это UTF-8, но безопасно ли всегда так предполагать?
Если это не безопасно предположить, существует ли способ (кроме mb_detect_encoding
) для определения кодировки строки? Я проверил заголовки запросов, они, похоже, ничего полезного.