|
|
|
| Здравствуйте.
Возникла проблема с кодировкой символов в имени переменной php при передачи в javascript.
Для фотогалереи сделал вывод увеличенного изображения, в динамически создаваемом окне, при клике по превьюшке.
Есть общий каталог для всех групп фотографий, для каждой группы создаётся отдельный каталог, имя каталогу присваивается по имени группы.
Имена групп на русском языке.
Когда передаю переменные php в функцию javascript для вывода в отдельном окне, имя каталога перекодируется в другую кодировку и поэтому фотография не выводтся, все остальные переменны выводятся без проблем.
прилагаю часть кода
<?php
/* объявляем переменные, которые передаём javascript */
$cat = $view_photo['id_catalog'];
$ph = $view_photo ['id_photo'];
$patch = "files/".$view_photo['nam']."/".$view_photo['big']; // рабочая переменная
$about = $view_photo['description'];
/* формируем переменную для вывода превьюшки, которая является ссылкой на увеличеную копию */
$image = "<a href=\"javascript:myPhoto('".$patch."',".$cat.",".$ph.",'".$about."')\"><img src='files/".$view_photo['nam']."/".$view_photo['small']."' height='100'></a>";
|
javascript
<script type="text/javascript">
function myPhoto(patch,cat,ph,about){
myWin = window.open("","newWindow","top=100,left=150,width=800,height=560");
myWin.document.open();
myWin.document.write("<html><head>");
myWin.document.write("<title>Big Size</title>");
myWin.document.write("<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>");
myWin.document.write("<link rel='stylesheet' type='text/css' href='stylecss.css'>");
myWin.document.write("</head><body>");
myWin.document.write("<div id='djs'>"+cat+" / "+ph+"</div>");
myWin.document.write("<div align='center'><img src='"+patch+"'><br>");
myWin.document.write("<div id='djs'>"+about+"</div>");
myWin.document.write("<div id='djs'><button onClick='javascript:window.close()'></button></div>");
myWin.document.write("</body></html>");
myWin.document.close();
}
</script>
|
если навести курсор на превьюшку, то путь к увеличенной копии, в статусной строке, отображается правильно
jjavascript:myPhoto('files/Четвёртая/20081218011048.jpg',17,88,'проверка')
|
где "Четвёртая" имя каталога группы фотографий
Но при открытии окна с увеличенной копией адрес фото такой
http://my_site/files/Четвёртая/20081218011048.jpg
|
Подскажите, пожалуйста, как сохранить имя каталога/переменной в правильной кодировке?
Кодировка страниц "windows-1251".
Заранее благодарю. | |
|
|
|
|
|
|
|
для: Slo_Nik
(19.12.2008 в 03:39)
| | Ну никак Вы не сделаете. Нельзя использовать кирилицу в названиях групп. По крайней мере, пока нельзя. | |
|
|
|
|
|
|
|
для: Николай2357
(19.12.2008 в 08:02)
| | Ну ладно, нельзя так нельзя, но дополнительным параметром я передаю краткое описание для каждого изображения, естественно тоже используя кирилицу.
Это тоже нельзя ни как сделать, чтобы выводило в нормальной кодировке?
В данном случае слово "проверка".
javascript:myPhoto('files/Четвёртая/20081218011048.jpg',17,88,'проверка')
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(19.12.2008 в 10:30)
| | Используйте UTF-8, именно она нормальная кодировка. А Ваша WINDOWS-1251 не нормальная Отсюда и все проблемы. | |
|
|
|
|
|
|
|
для: Николай2357
(19.12.2008 в 11:41)
| | ну а если всё готово, то как мне конвертировать все скрипты в другую кодировку? | |
|
|
|
|
|
|
|
для: Slo_Nik
(19.12.2008 в 15:29)
| | Проблему решил, всем спасибо за участие.
Всё решается в коде php функцией rawurlencode().
<?php
$nam = rawurlencode($view_photo['nam']); // каталог группы фотографий, имя на русском языке
$patch = "files/".$nam."/".$view_photo['big']; // путь к увеличеной фотографии
$image = "<a href=\"javascript:myPhoto('".$patch."',".$cat.",".$ph.",'".rawurlencode($about)."')\"><img src='files/".$view_photo['nam']."/".$view_photo['small']."' height='100'></a>";
?>
|
Если верить результатам, то можно использовать кирилицу в названиях каталога.
Меня сбило с толку то, что на странице всё отображалось нормально, а вот в окне js была фигня, поэтому и решил, что на мой вопрос найду ответ в этом разделе форума.
Посмотрю как дальше будет работать на реальном сайте... | |
|
|
|