Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранение кодировки символов при передачи переменной из php в javascript
 
 автор: Slo_Nik   (19.12.2008 в 03:39)   письмо автору
 
 

Здравствуйте.
Возникла проблема с кодировкой символов в имени переменной 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".
Заранее благодарю.

  Ответить  
 
 автор: Николай2357   (19.12.2008 в 08:02)   письмо автору
 
   для: Slo_Nik   (19.12.2008 в 03:39)
 

Ну никак Вы не сделаете. Нельзя использовать кирилицу в названиях групп. По крайней мере, пока нельзя.

  Ответить  
 
 автор: Slo_Nik   (19.12.2008 в 10:30)   письмо автору
 
   для: Николай2357   (19.12.2008 в 08:02)
 

Ну ладно, нельзя так нельзя, но дополнительным параметром я передаю краткое описание для каждого изображения, естественно тоже используя кирилицу.
Это тоже нельзя ни как сделать, чтобы выводило в нормальной кодировке?
В данном случае слово "проверка".
javascript:myPhoto('files/Четвёртая/20081218011048.jpg',17,88,'проверка')

  Ответить  
 
 автор: Николай2357   (19.12.2008 в 11:41)   письмо автору
 
   для: Slo_Nik   (19.12.2008 в 10:30)
 

Используйте UTF-8, именно она нормальная кодировка. А Ваша WINDOWS-1251 не нормальная Отсюда и все проблемы.

  Ответить  
 
 автор: Slo_Nik   (19.12.2008 в 15:29)   письмо автору
 
   для: Николай2357   (19.12.2008 в 11:41)
 

ну а если всё готово, то как мне конвертировать все скрипты в другую кодировку?

  Ответить  
 
 автор: Slo_Nik   (19.12.2008 в 16:11)   письмо автору
 
   для: 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 была фигня, поэтому и решил, что на мой вопрос найду ответ в этом разделе форума.
Посмотрю как дальше будет работать на реальном сайте...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования