Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не передает русский текст 
:(
    Опции темы
z006
Дата 11.3.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



изначально написал в раздел по XML,но меня перенаправили сюда.

Код

<?
$doc = new DOMDocument('1.0','windows-1251');
header('Content-Transfer-Encoding: 8bit');
header('Content-Type: text/xml; charset=UTF-8');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
$level = $doc->createElement("response");
$doc -> appendChild($level);
db_connect();
.................
  $qq=db_query("SELECT name FROM n WHERE id=$e[k]");
  $ee=mysql_fetch_array($qq);
.................
    $root = $doc->createElement("block");
     $level->appendChild($root);
     $item = $doc->createElement("answer");
     $root->appendChild($item);
   $textid = $doc->createTextNode($out);
   $item->appendChild($textid);
echo $doc->saveXML();
?>



данные уходят к яваскрипт файлу.беда такова,что если в поле name у нас текст на латинице-никаких проблем,все передается.а если на кирилице-ни в какую.как-то не хочется до передачи загонять в ютф_енкод,а в яваскрипте разбирать аналогом ютф_декод.
может есть более грамотное решение?
PM MAIL   Вверх
bars80080
Дата 11.3.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



Цитата(z006 @  11.3.2010,  13:14 Найти цитируемый пост)
а если на кирилице-ни в какую

а что вы собственно хотели? у вас разброд в кодировках:
Цитата(z006 @  11.3.2010,  13:14 Найти цитируемый пост)
$doc = new DOMDocument('1.0','windows-1251');
header('Content-Transfer-Encoding: 8bit');
header('Content-Type: text/xml; charset=UTF-8');

надо выбирать что-то одно
PM MAIL WWW   Вверх
z006
Дата 11.3.2010, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Код

header('Content-Type: text/xml; charset=UTF-8');

при смене кодировки на cp1251 или windows-1251 результат не меняется. 
PM MAIL   Вверх
bars80080
Дата 11.3.2010, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



Цитата(z006 @  11.3.2010,  13:29 Найти цитируемый пост)
при смене кодировки на cp1251 или windows-1251 результат не меняется.  

я догадывюсь, что у вас весь остальной скрипт заточен под utf-8. к примеру, при подключении к БД стоит set names utf8, или ещё что.

сведите пример к простому варианту, выкинув вначале всё, а затем добавляя отдельные конструкции, постепенно усложняя. увидите на каком этапе появляется ошибка
PM MAIL WWW   Вверх
z006
Дата 11.3.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Код

<?
$doc = new DOMDocument('1.0','windows-1251');
header('Content-Transfer-Encoding: 8bit');
header('Content-Type: text/xml; charset=UTF-8');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
$level = $doc->createElement("response");
$doc -> appendChild($level);
require "../../confa/db.php";
$db=mysql_connect(db_server, db_user, db_passwd);
          $tmp = @mysql_query("SHOW VARIABLES like 'character_set_server';"); 
          $enc = @mysql_fetch_assoc($tmp); 
          @mysql_free_result($tmp); 
          $enc = $enc['Value']; 
          @mysql_query("SET character_set_client='$enc'"); 
          @mysql_query("SET character_set_connection='$enc'"); 
          @mysql_query("SET character_set_database='$enc'"); 
          @mysql_query("SET character_set_results='$enc'"); 
          unset($enc); 
          unset($tmp);
mysql_select_db(db_basename,$db);
$q=mysql_query("SELECT 1,2,3,4 FROM t WHERE s LIKE ................................");
$out="[";
for ($w=0; $w<mysql_num_rows($q);$w++)
 {
..............
 }
    $root = $doc->createElement("block");
     $level->appendChild($root);
     $item = $doc->createElement("answer");
     $root->appendChild($item);
   $textid = $doc->createTextNode($out);
   $item->appendChild($textid);
echo $doc->saveXML();
?>

если оставляю так-результат как я и написал в начале темы.





Код

<?
$doc = new DOMDocument('1.0','windows-1251');
header('Content-Transfer-Encoding: 8bit');
header('Content-Type: text/xml; charset=UTF-8');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
$level = $doc->createElement("response");
$doc -> appendChild($level);
require "../../confa/db.php";
$db=mysql_connect(db_server, db_user, db_passwd);
mysql_select_db(db_basename,$db);
$q=mysql_query("SELECT 1,2,3,4 FROM t WHERE s LIKE ................................");
$out="[";
for ($w=0; $w<mysql_num_rows($q);$w++)
 {
..............
 }
    $root = $doc->createElement("block");
     $level->appendChild($root);
     $item = $doc->createElement("answer");
     $root->appendChild($item);
   $textid = $doc->createTextNode($out);
   $item->appendChild($textid);
echo $doc->saveXML();
?>

если так-то пишет mysql_num_rows(): supplied argument is not a valid MySQL result resource

так что что-то никак оно русский язык не хочет передавать.....
PM MAIL   Вверх
z006
Дата 11.3.2010, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



временно решил проблему перекодировкой каждой выводимой переменной через iconv("CP1251", "UTF-8", $e['sname']); ,хотя седалищным нервом чувствую что не грамотно это.за сим по-прежнему прошу умного совета как выкрутится?

PM MAIL   Вверх
solenko
Дата 11.3.2010, 19:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Цитата(z006 @  11.3.2010,  13:14 Найти цитируемый пост)
данные уходят к яваскрипт файлу.

http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/
Цитата

 the data must be encoded as UTF-8 for transmission.

И это работает в двух направлениях. Для других кодировок, скорее всего, будет доступен responseText
Цитата(z006 @  11.3.2010,  17:34 Найти цитируемый пост)
,хотя седалищным нервом чувствую что не грамотно 

Ну... Грамотней изначально работать с юникодом )


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
z006
Дата 11.3.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(solenko @ 11.3.2010,  19:02)
Ну... Грамотней изначально работать с юникодом )

да,но в базе-то все в cp1251......
PM MAIL   Вверх
solenko
Дата 11.3.2010, 19:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Изначально подразумевает ДО старта проекта и наполнения базы )


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
z006
Дата 11.3.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



хех,ну а сейчас что делать?или перекодирование как я сделал-самый оптимальный вариант?
PM MAIL   Вверх
bars80080
Дата 11.3.2010, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



если заморочек с переписыванием скриптов немного (при грамотной конструкции их вообще быть недолжно), то отконвертировать всю базу в ютф-8 - пара минут
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1051 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.