|
|
|
| Как с помощью JS преобразовать строку "кот "Вася" в строку "%EA%EE%F2+%22%C2%E0%F1%FF%22", которую можно передавать в качестве get-параметра? И обратно. | |
|
|
|
|
|
|
|
для: кен
(16.05.2005 в 22:25)
| | Уточняю задачу. Нужен JS-эквивалент PHP-функций urlencode()/urldecode(). Чтобы строка запроса, сформированная JS, корректно расшифровывалась с помощью PHP. Функции escape()/unescape() не работают: в них кориллица и спецсимволы кодируются по-другому, и PHP-urldecode их не восстанавливает. Думаю, таких готовых функций в JS нет. А как написать самому? По какому алгоритму делает это PHP? | |
|
|
|
|
|
|
|
для: кен
(17.05.2005 в 18:11)
| | Есть. Называются
и
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(18.05.2005 в 08:42)
| | Спасибо огромное, Дизайнер. Вы мне очень помогли! | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(18.05.2005 в 08:42)
| | Упс! Опять проблема. Когда Дизайнер предложил encodeURI(), я помнится, попробовал - и вроде вышло. А сейчас приступил к реализации проекта, и обнаружил, что это не работает.
Пример:
- [JS] encodeURI ('я') = %D0%B0
- [PHP] urlencode ('я') = %E0
Результаты совсем не совпадают. И, естественно, PHP не может переварить строку, составленную с помощью JS. Так что же делать? Помогите, пожалуйста. | |
|
|
|
|
|
|
|
для: кен
(29.05.2005 в 21:16)
| | JavaScript еще преобразовывает в UTF-8 кодировку. Попробуйте вот так:
<html>
<head>
<script language="JavaScript">
alert(encodeURI("я"))
</script>
</head>
<body>
<?
echo urlencode(iconv("cp1251", "UTF-8", "я"));
?>
|
Функция iconv преобразовывает из кодировки cp1251 в кодироку UTF-8. Для работы этой функции должна быть подключена библиотека iconv. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(30.05.2005 в 05:24)
| | Не могу подключить библиотеку iconv.
Делаю так. В php.ini установил:
extension_dir = "C:/Program Files/PHP/extensions/"
extension=php_iconv.dll
|
В ответ - ругань:
"php.exe - Библиотека DLL iconv.dll ненайдена по указанному пути ..." и куча путей: к ядру PHP и ко многим системным папкам.
И сразу же: "Warning. Unkhown(): Unable to load dynamic library 'C:/Program Files/PHP/extensions/php_iconv.dll' - Не найден указанный модуль."
Почему не находит, если в указанной в ini папке свободно валяется php_iconv.dll (20 Kb)? И что он ищет в системных папках?
А ещё есть какая-то iconv.dll (820 Kb) в C:/Program Files/PHP/dlls/ - это что такое?
Подскажите, что я не так сделал при подключении? | |
|
|
|
|
|
|
|
для: кен
(30.05.2005 в 14:51)
| | Всё, разобрался. Надо было дополнительно скопировать iconv.dll в одну из системных папок или в корневую папку PHP. Помогла Ваша статья:
http://www.softtime.ru/info/articlephp.php?id_article=24 | |
|
|
|
|
|
|
|
для: кен
(30.05.2005 в 15:11)
| | Если на хосте не заладится (не подключена iconv), то пишите. Есть и другие способы конвертирования в UFT-8. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(31.05.2005 в 07:29)
| | Дизайнер, пожалуйста, напишите, как избавиться от данной проблемы, не устанавливая дополнительных модулей. Заранее спасибо. | |
|
|
|
|
|
|
|
для: rockmachine
(01.09.2005 в 13:49)
| | Попробуйте вот такой вариант. Перекодирование осуществляется в лоб через собственную функцию.
<html>
<head>
<script language="JavaScript">
alert("Это буква я: "+encodeURI("я"))
</script>
</head>
<body>
<?
// Это буква я
$str = "%D1%8F";
echo "Исходная строка: ".$str."<br>";
$str = urldecode($str);
echo "Перекодированная: ".utf8_win($str);
function utf8_win($s)
{
$s=str_replace("\xD0\xB0","а",$s); $s=str_replace("\xD0\x90","А",$s);
$s=str_replace("\xD0\xB1","б",$s); $s=str_replace("\xD0\x91","Б",$s);
$s=str_replace("\xD0\xB2","в",$s); $s=str_replace("\xD0\x92","В",$s);
$s=str_replace("\xD0\xB3","г",$s); $s=str_replace("\xD0\x93","Г",$s);
$s=str_replace("\xD0\xB4","д",$s); $s=str_replace("\xD0\x94","Д",$s);
$s=str_replace("\xD0\xB5","е",$s); $s=str_replace("\xD0\x95","Е",$s);
$s=str_replace("\xD1\x91","ё",$s); $s=str_replace("\xD0\x81","Ё",$s);
$s=str_replace("\xD0\xB6","ж",$s); $s=str_replace("\xD0\x96","Ж",$s);
$s=str_replace("\xD0\xB7","з",$s); $s=str_replace("\xD0\x97","З",$s);
$s=str_replace("\xD0\xB8","и",$s); $s=str_replace("\xD0\x98","И",$s);
$s=str_replace("\xD0\xB9","й",$s); $s=str_replace("\xD0\x99","Й",$s);
$s=str_replace("\xD0\xBA","к",$s); $s=str_replace("\xD0\x9A","К",$s);
$s=str_replace("\xD0\xBB","л",$s); $s=str_replace("\xD0\x9B","Л",$s);
$s=str_replace("\xD0\xBC","м",$s); $s=str_replace("\xD0\x9C","М",$s);
$s=str_replace("\xD0\xBD","н",$s); $s=str_replace("\xD0\x9D","Н",$s);
$s=str_replace("\xD0\xBE","о",$s); $s=str_replace("\xD0\x9E","О",$s);
$s=str_replace("\xD0\xBF","п",$s); $s=str_replace("\xD0\x9F","П",$s);
$s=str_replace("\xD1\x80","р",$s); $s=str_replace("\xD0\xA0","Р",$s);
$s=str_replace("\xD1\x81","с",$s); $s=str_replace("\xD0\xA1","С",$s);
$s=str_replace("\xD1\x82","т",$s); $s=str_replace("\xD0\xA2","Т",$s);
$s=str_replace("\xD1\x83","у",$s); $s=str_replace("\xD0\xA3","У",$s);
$s=str_replace("\xD1\x84","ф",$s); $s=str_replace("\xD0\xA4","Ф",$s);
$s=str_replace("\xD1\x85","х",$s); $s=str_replace("\xD0\xA5","Х",$s);
$s=str_replace("\xD1\x86","ц",$s); $s=str_replace("\xD0\xA6","Ц",$s);
$s=str_replace("\xD1\x87","ч",$s); $s=str_replace("\xD0\xA7","Ч",$s);
$s=str_replace("\xD1\x88","ш",$s); $s=str_replace("\xD0\xA8","Ш",$s);
$s=str_replace("\xD1\x89","щ",$s); $s=str_replace("\xD0\xA9","Щ",$s);
$s=str_replace("\xD1\x8A","ъ",$s); $s=str_replace("\xD0\xAA","Ъ",$s);
$s=str_replace("\xD1\x8B","ы",$s); $s=str_replace("\xD0\xAB","Ы",$s);
$s=str_replace("\xD1\x8C","ь",$s); $s=str_replace("\xD0\xAC","Ь",$s);
$s=str_replace("\xD1\x8D","э",$s); $s=str_replace("\xD0\xAD","Э",$s);
$s=str_replace("\xD1\x8E","ю",$s); $s=str_replace("\xD0\xAE","Ю",$s);
$s=str_replace("\xD1\x8F","я",$s); $s=str_replace("\xD0\xAF","Я",$s);
return $s;
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(02.09.2005 в 04:34)
| | Такой вариант похож на выключение воды путем завязывания узлом водопроводного крана. | |
|
|
|
|
|
|
|
для: rockmachine
(02.09.2005 в 17:18)
| | Когда затопило пол квартиры - это метод самый действенный. Время разработчика стоит в несколько десятков, а то и сотен раз дороже компьютерного времени. | |
|
|
|
|
|
|
|
для: rockmachine
(02.09.2005 в 17:18)
| | У вас же ничего нет кроме метода грубой силы… Необходимые библиотеки на хосте не установлены. Поэтому выбора у вас нет. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(03.09.2005 в 04:25)
| | Дизайнер, я понял: зря это я, про воду. Спасибо, что так подробно ответили на вопрос, не пожалев времени.
-----------------------------------
Дизайнер, а как Вы думаете, почему, пользуясь такими развитыми языками, как
PHP и JavaScript, приходится стоять раком из-за мелочей вроде кодировки? | |
|
|
|
|
|
|
|
для: rockmachine
(05.09.2005 в 13:50)
| | С мелочами всегда и везде нервотрепка.
А про PHP...
С кириллицей много проблем. И та в том числе. Видимо не было среди разработчиков языка братьев славян. | |
|
|
|
|
|
|
|
для: rockmachine
(05.09.2005 в 13:50)
| | >Дизайнер, а как Вы думаете, почему, пользуясь такими
>развитыми языками, как
>PHP и JavaScript, приходится стоять раком из-за мелочей
>вроде кодировки?
По тому что в России очень много кодировок (5 штук), поэтому проблемы не избежны, пока все на UNICODE не перелезут (да и в нём уже плодить разные варианты начали). | |
|
|
|
|