перекодировка utf->windows 1251

drizzle

Новичок
перекодировка utf->windows 1251

если записи в базе хранятся в utf а вывести их нужно в windows1251 кодировке, то как это можно сделать?
 

SiMM

Новичок
> в базе хранятся в utf а вывести их нужно в windows1251 кодировке
Интересно, зачем?
 

drizzle

Новичок
Автор оригинала: SiMM
> в базе хранятся в utf а вывести их нужно в windows1251 кодировке
Интересно, зачем?
Это потому, что если вывожу в страницу в которой в мета указана кодировка utf то всеравно кракозяблы отображаются. А еще потому
, что весь остальной сайт на win1251
 

drizzle

Новичок
пользую remote scripting для добавления записей из формы в базу.
XMLHttpRequest() и ActiveXObject("Msxml2.XMLHTTP"). По всей видимости оба эти способа передают данные в utf-8, хотя страница с формой отправляющей данные в windows1251 кодировке.
В заголовке присылаемом сервером кодировка вообще какая-то "chunked":
HTTP/1.1 200 OK
Date: Fri, 01 Apr 2005 11:38:51 GMT
Server: Apache/1.3.31 (Win32) PHP/4.3.10
X-Powered-By: PHP/4.3.10
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
 

SiMM

Новичок
> По всей видимости оба эти способа передают данные в utf-8
Ну так и клал бы в базу в Windows-1251, если UTF-8 как таковой тебе не сдался. Функцию тебе уже подсказали.

> В заголовке присылаемом сервером кодировка вообще какая-то "chunked":
> Transfer-Encoding: chunked
Это к кодировке страницы не имеет никакого отношения. В заголовке у тебя кодировка не указана вообще
> Content-Type: text/html
 

drizzle

Новичок
Автор оригинала: DimbIch
если уж на то пошло сделай Collation в базе win-1251 и все....
делаю
SELECT nik, mess from chat where timek>$lagtime COLLATE cp1251_utf8
ругается
mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...
видимо в синтаксисе запроса ошибка
Скажите, пара cp1251_utf8 записана правильно?
 

DimbIch

Новичок
а где тут сказано что ошибка синтаксиса ???

может код покажем чуток побольше ???
 

drizzle

Новичок
покажем:
PHP:
39while (1) {
40// Проверяем не пришло ли новое сообщения и если это
41// так, то выводим его на экран 
42//$query="SELECT nik, mess from chat where timek>$lagtime ";
43query="SELECT nik, mess from chat where timek>$lagtime COLLATE cp1251_utf8 ";
44$result=mysql_query($query);
45// Проверим если хоть одна строчка результата
46if(mysql_num_rows($result))
47							{
48$lagtime=time();
49// Если они есть будем выдавать их в виде
50// таблицы в формате "ник:сообщение"
51echo"<table>";
// Цикл повторяющийса столько раз, сколько
// строк результата мы получили
// Присваеваем переменной $mda асоциативный 
// масив с текущей строкой из результата
// в формате $mda['nik']="имя" и $mda['mess']="сообщение"
while($mda=mysql_fetch_assoc($result))
									{
// Выдаем в первой колонке таблицы имя
echo "<tr><td style=' width: 150px'><font <I>".$mda['nik'].": </td><td align='left'>";
// Выдаем во второй колонке таблицы сообщение
echo $mda['mess']."<br></td></tr>";
									}
echo "</table>";
							}
// Все что в этом круге цикла было дописано,
// опорожняеться из буфера в броузер
flush();
// Заставляем скрипт "проспать" одну секунду, 
// что бы не завалить сервер запросами
sleep(1);
		}
ошибка при выполнении:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in w:\home\localhost\www\support\read.php on line 45
 

DimbIch

Новичок
правильная кодировка это cp1251_general_ci
ну или в таком плане - смотря что там тебе надо
 

drizzle

Новичок
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATE cp1251_general_ci_utf8' at line 1

наверное utf тоже правильно угадать надо.....
 

DimbIch

Новичок
utf8_general_ci
это если на счет кодировки :)

я же сказал - читай ман :)
 
Сверху