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

Форум MySQL

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

 

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

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

тема: Не выводит русский язык из Mysql
 
 автор: kest131   (05.06.2005 в 11:44)   письмо автору
 
 

При выводе строк(на русском языке) из MySQL в php,выводит какуюто ерундую.
Что надо исправить и где.

   
 
 автор: cheops   (05.06.2005 в 12:38)   письмо автору
 
   для: kest131   (05.06.2005 в 11:44)
 

Как русский текст попал в MySQL (из PHP, из консольного клиента mysql)? и как выводится (при помощи PHP, в консольном клиенте mysql)?
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=354

PS Темы посвящённые MySQL лучше сразу помещать в разделе MySQL http://www.softtime.ru/forum/index.php?id_forum=3

   
 
 автор: kest131   (05.06.2005 в 12:45)   письмо автору
 
   для: cheops   (05.06.2005 в 12:38)
 

Разницы как русский текст попал в MySQL нет (можно через консольного клиента mysql можно через php(mysql_query))
А выводится при помощи php :

$a = mysql_query("select*from table limit 1;");
while($b = mysql_fetch_array($a)) 
 {
echo $b[text];
 }

   
 
 автор: cheops   (05.06.2005 в 13:02)   письмо автору
 
   для: kest131   (05.06.2005 в 12:45)
 

Разница имеется, в консоли Windows по умолчанию стоит кодировка 866 (DOS), а текст зачастую идёт в кодировке 1251 (Windows), поэтому часто возникают накладки - в ссылке двумя постами выше обсуждается как раз примерно схожая ситуация и приводится решение.

PS Смена кодировки в браузере к чему-нибудь приводит?
PPS Кстати, какая у вас версия MySQL?

   
 
 автор: kest131   (05.06.2005 в 13:14)   письмо автору
 
   для: cheops   (05.06.2005 в 13:02)
 

А как менять кодировки в браузере .
Версия 4.1

   
 
 автор: cheops   (05.06.2005 в 13:24)   письмо автору
 
   для: kest131   (05.06.2005 в 13:14)
 

А ерунда - это не знаки вопроса? Дело в том, что расширение PHP для работы с MySQL не скорректировано под версию 4.1 - все на 4.0 ещё сидят и ждут, когда выйдет обновление для библиотеки php_mysql.dll, которое позволит понормальному работать с русским языком.

PS Кодировки зависят от браузера, но обычно это (Вид|Кодировка).

   
 
 автор: kest131   (05.06.2005 в 13:42)   письмо автору
 
   для: cheops   (05.06.2005 в 13:24)
 

Попробовал послать русский текст из PHP и все получилось.

   
 
 автор: cheops   (05.06.2005 в 14:02)   письмо автору
 
   для: kest131   (05.06.2005 в 13:42)
 

Хм... и выводит корректно?

   
 
 автор: XPraptor   (05.06.2005 в 16:34)   письмо автору
 
   для: kest131   (05.06.2005 в 13:42)
 

Да это известный баг старших версий MySQL.
Скоты они в общем! Теперь кодировки сервера, клиента, базы, таблица, ячейки, и вывода - все разные вещи и устанавливаются непосредственно в коде запросов.

Мне пришлось упдатить таблица своих 10 сайтов, задолбался.
А решение для русского очень простое, если изначально для таблицы и базы было выбрано сравнение строк как cp1251, то в PHP коде сразу после соединения с БД пиши следующие три запроса:

mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251_general_ci'");

и все будет записывать, отображать и сортировать как надо.

   
 
 автор: kest131   (05.06.2005 в 19:19)   письмо автору
 
   для: XPraptor   (05.06.2005 в 16:34)
 

При таких командах вместо текста выводит только знаки вопросов(???????????)

   
 
 автор: XPraptor   (06.06.2005 в 12:13)   письмо автору
 
   для: kest131   (05.06.2005 в 19:19)
 

А у тебя точно в cp1251 таблицы и база?
Если нет, ты должен подставить в эти команды свою кодировку.
Еще нюанс - если ты переносил данные из старой базы в новую версию и у тебя были кодированы таблицы в cp1251 а после переноса взял и изменил сравнение в новой базе на cp1251 (что кстати я и сделал и долбался потом снова заполняя таблицы), то все! можешь забыть про эти данные и начать импорт снова. Потому как все твои данные уже потеряны и всегда будут знаками вопроса.
Эти гады выпустили утилиту MigrationKit типа она мигратит без проблем данные из старых версий в новые - НИФИГА! Ничего она ни мигратит в русской кодировке, данные также приходят в коверканом виде в новую базу.
Вообще код поддержки кодировок в новой версии писали не разработчики MySQL а поклонники (найти бы его и в голову гвоздь забить) а разработчики взяли его код за основу и применили у себя. Я вот одного не понимаю - если одному дебилу, пусть и очень продвинутому, удобно пользоваться такой схемой разных кодировок в разных объектах, то почему все остальные должны от этого страдать?

   
Rambler's Top100
вверх

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