Php + rawurlencode + норвежские символы
338 повідомлень
#15 років тому
Такая проблема:есть строка: "Strømmen Sparebank"
кодирую ее rawurlencode, получаю на выходе "Str%C3%B8mmen%20Sparebank"
в общем-то как и должно быть. Все работает до переноса на хостинг.
там при кодировании получаю другую абсолютно строку "Str%26%23248%3Bmmen%20Sparebank"
где грабли ?
setlocale(LC_ALL, 'en_US.utf8'

3240 повідомлень
#15 років тому
Цитата ("ypeskov"):setlocale(LC_ALL, 'en_US.utf8'; стоит принудительно
Стоит-то стоит, но поддерживается ли эта локаль хостингом? Нужно проверять.
Но вообще в данном случае проблема не в этом.
Обратите внимание, как например тут на Веблансере написано это слово "Str0mmen Sparebank". Вместо зачеркнутого "o" получилось ø
То есть, Вам на вход вместо "Str0mmen Sparebank" уже приходит "Strømmen Sparebank", а rawurlencode его, естественно, кодирует как "Str%26%23248%3Bmmen%20Sparebank".
Проблема тут в Content-Type Вашей HTML страницы. Видимо, локально у Вас все установлено правильно, а тут выбрали какой-то стародревний дремучий русский хостинг, где насильственно установлено windows-1251, мало ли...
Если хотите чтобы поддерживался UTF-8, делайте так, чтобы страница отдавалась в этой кодировке.
Используйте как <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> (это не обязательно, но все же имеет смысл делать для совместимости со старыми клиентами) так и в свой PHP скрипт добавляйте перед отдачей HTML header('Content-type: text/html; charset=utf-8'

Для статического HTML посмотрите настройки хостинга, как можно Content-Type выставлять, может быть в крайнем случае даже через .htaccess, если поддерживается хостингом.
338 повідомлень
#15 років тому
tvv,да тут наверное все-таки что-то другое. Потому как, рядом на странцие такие же символы отображаются нормально. а вот именно после rawurlencode текст корячит.
Я не могу понять, какой фактор влияет, что функция по разному кодирует на хостинге и локальной машине.
Вышепреведенные результаты это взяты из исходного кода страницы.
Пока решил пробелму путем костыльного собственной функции замены спецсимволов. Но вопрос остался, чтобы это было.