|
|
|
| При выводе строк(на русском языке) из MySQL в php,выводит какуюто ерундую.
Что надо исправить и где. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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];
}
|
| |
|
|
|
|
|
|
|
для: kest131
(05.06.2005 в 12:45)
| | Разница имеется, в консоли Windows по умолчанию стоит кодировка 866 (DOS), а текст зачастую идёт в кодировке 1251 (Windows), поэтому часто возникают накладки - в ссылке двумя постами выше обсуждается как раз примерно схожая ситуация и приводится решение.
PS Смена кодировки в браузере к чему-нибудь приводит?
PPS Кстати, какая у вас версия MySQL? | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 13:02)
| | А как менять кодировки в браузере .
Версия 4.1 | |
|
|
|
|
|
|
|
для: kest131
(05.06.2005 в 13:14)
| | А ерунда - это не знаки вопроса? Дело в том, что расширение PHP для работы с MySQL не скорректировано под версию 4.1 - все на 4.0 ещё сидят и ждут, когда выйдет обновление для библиотеки php_mysql.dll, которое позволит понормальному работать с русским языком.
PS Кодировки зависят от браузера, но обычно это (Вид|Кодировка). | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 13:24)
| | Попробовал послать русский текст из PHP и все получилось. | |
|
|
|
|
|
|
|
для: kest131
(05.06.2005 в 13:42)
| | Хм... и выводит корректно? | |
|
|
|
|
|
|
|
для: 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'");
|
и все будет записывать, отображать и сортировать как надо. | |
|
|
|
|
|
|
|
для: XPraptor
(05.06.2005 в 16:34)
| | При таких командах вместо текста выводит только знаки вопросов(???????????) | |
|
|
|
|
|
|
|
для: kest131
(05.06.2005 в 19:19)
| | А у тебя точно в cp1251 таблицы и база?
Если нет, ты должен подставить в эти команды свою кодировку.
Еще нюанс - если ты переносил данные из старой базы в новую версию и у тебя были кодированы таблицы в cp1251 а после переноса взял и изменил сравнение в новой базе на cp1251 (что кстати я и сделал и долбался потом снова заполняя таблицы), то все! можешь забыть про эти данные и начать импорт снова. Потому как все твои данные уже потеряны и всегда будут знаками вопроса.
Эти гады выпустили утилиту MigrationKit типа она мигратит без проблем данные из старых версий в новые - НИФИГА! Ничего она ни мигратит в русской кодировке, данные также приходят в коверканом виде в новую базу.
Вообще код поддержки кодировок в новой версии писали не разработчики MySQL а поклонники (найти бы его и в голову гвоздь забить) а разработчики взяли его код за основу и применили у себя. Я вот одного не понимаю - если одному дебилу, пусть и очень продвинутому, удобно пользоваться такой схемой разных кодировок в разных объектах, то почему все остальные должны от этого страдать? | |
|
|
|