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
) для определения кодировки строка? Я проверил заголовки запросов, похоже, в них нет ничего полезного.