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

Форум PHP

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

 

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

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

тема: Как сохранить файл в нужной кодировке?
 
 автор: Usta   (13.04.2008 в 19:45)   письмо автору
 
 

У меня тоже про кодировку есть php код для генерации XML файла.

<?php
  $query 
"SELECT * FROM photo WHERE hide='show' ORDER BY pos";
  
$new mysql_query($query);
  
$text.= "<?xml version='1.0' encoding='UTF-8'?>\n";
  
$text.= "<sites>\n";
    while(
$news mysql_fetch_array($new))
    {
      
$text.="<Photo img='$news[big]' tmb='$news[small]' name1='$news[name]' dolj='$news[name_dol]' />\r\n";
    }
   
$text.="</sites>\n";
?>
<?php
  $fd 
"xmlphoto.xml";
  
$fd fopen($fd"w");
  
fwrite($fd$text);
  
fclose($fd);
?>

После генерации XML используется Flash-ем. Но он не понимает кодировку после генерации. Когда сохраняю в ручную XML, через блокнот, в формате UTF-8, то все работает. Что делать помогите. Пытался написать в config.php @mysql_query("SET NAMES UTF-8"); не помогает.

   
 
 автор: 3423   (13.04.2008 в 19:58)   письмо автору
 
   для: Usta   (13.04.2008 в 19:45)
 

Попробуй mysql_query("SET NAMES `utf-8`;"); Твой синтаксис может и не понять. Не проверял, не знаю

   
 
 автор: Usta   (13.04.2008 в 20:40)   письмо автору
 
   для: 3423   (13.04.2008 в 19:58)
 

Не помогает. :))

   
 
 автор: BiFF   (13.04.2008 в 21:30)   письмо автору
 
   для: 3423   (13.04.2008 в 19:58)
 

mysql_query ("set character_set_client='UTF-8'");  
mysql_query ("set character_set_results='UTF-8'");  
mysql_query ("set collation_connection='UTF-8_general_ci'"); 

   
 
 автор: Usta   (13.04.2008 в 22:40)   письмо автору
 
   для: BiFF   (13.04.2008 в 21:30)
 

Не помогло. Тут наверно не в этом дело. Тут дело в кодировке ANSI. Когда я кидаю файл на сервак в кодировке UTF-8, то работает. После генерации XML, файл опять становиться ANSI. Нужно чтоб после генерации остался UTF-8.

   
 
 автор: mechanic   (14.04.2008 в 09:52)   письмо автору
 
   для: Usta   (13.04.2008 в 22:40)
 

попробуй перед записью в файл fwrite($fd, $text); перевести текст в utf-8 с помощью iconv();

   
 
 автор: cheops   (14.04.2008 в 12:39)   письмо автору
 
   для: Usta   (13.04.2008 в 19:45)
 

А в какой кодировке сохраняется файл?

   
 
 автор: Usta   (14.04.2008 в 15:26)   письмо автору
 
   для: cheops   (14.04.2008 в 12:39)
 

Новерное в ANSI, или в windows-1251. Я написал.

  // Имя файла
  $fd = "xmlphoto.xml";
  // Сохраняем результат в файле
  $fd = fopen($fd, "w");
   iconv("cp1251","UTF-8",$fd);
 // или  iconv("ANSI","UTF-8",$fd);
 // или  iconv("windows-1251","UTF-8",$fd);
  fwrite($fd, $text);
  fclose($fd);

Ни один вариант не помог :((

   
 
 автор: mechanic   (14.04.2008 в 17:54)   письмо автору
 
   для: Usta   (14.04.2008 в 15:26)
 

хм.. еще бы..
кодировать то не ресурс надо, а текст!
т.е. iconv("ANSI","UTF-8",$text);

   
 
 автор: Giga   (14.04.2008 в 18:24)   письмо автору
 
   для: Usta   (13.04.2008 в 19:45)
 

@mysql_query("SET NAMES cp1251"); и ваша UTF-8 будет нормально записыватся и выводится из БД как СЂРѕСЂСЂРѕСЂРѕ (РђРґРјРёРЅ) .....

   
 
 автор: Usta   (14.04.2008 в 18:46)   письмо автору
 
   для: Giga   (14.04.2008 в 18:24)
 

>@mysql_query("SET NAMES cp1251"); и ваша UTF-8 будет нормально записыватся и выводится из БД как СЂРѕСЂСЂРѕСЂРѕ (РђРґРјРёРЅ) .....
Я так уже пробовал. не получается.
Пробовал и iconv("ANSI","UTF-8",$text); другие кодировки и не фига. Все равно не пашет.
Нужно наверное файл в другую кодировку перевести или чтоб файл удалялся и создавался новый!! Опять все через мягкое место получается!! Вроде файл маленький, а проблем полно. Спасибо всем за помощь, кто пытался помочь.

   
 
 автор: Usta   (16.04.2008 в 02:06)   письмо автору
 
   для: Usta   (14.04.2008 в 18:46)
 

Все решил проблему с кодировкой! Если у вас FLASH читае XML и русскими буквами, то вам это пригодится. Код переводит файл из кодировки ANSI в UTF-8. По крайне мере FLASH читает XML и понимает наличие в ней русских букв. Не забудьте ставить в конце "\r\n" после каждой строки иначе может не сработать.
<?php
  mysql_query
("SET NAMES UTF8");
  
$query "SELECT * FROM photo WHERE hide='show' ORDER BY pos";
  
$new mysql_query($query);
  
$text.="<?xml version='1.0' encoding='UTF-8' standalone='yes'?>\r\n";
  
$text.= "<sites>\r\n";
    while(
$news mysql_fetch_array($new))
    {
      
$text.="<Photo img='$news[big]' tmb='$news[small]' name1='$news[name]' dolj='$news[name_dol]' />\r\n";
    }
   
$text.="</sites>\r\n";
   echo 
$text;
?>
<?php
  
// Имя файла
  
$fd "xmlphoto.xml";
  
// Сохраняем результат в файле
  
$fd fopen($fd"w");
 
//  iconv("UTF8","UTF8",$text);
  
iconv("ANSI","UTF-8",$text);
  
fputs($fd$text);
  
fclose($fd);
?>

   
Rambler's Top100
вверх

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