utf8 в mysql и символ Ё

sky2k4

Guest
utf8 в mysql и символ Ё

При вставке в таблицу строки в utf8 портится буква Ё если произвести селект из таблицы всё символы отображаётся кроме этого(и в консоли и в бравзере)

CREATE TABLE `test10` (
`a` int(11) default NULL,
`b` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8

4.1.7

В чём может быть проблема?
 

sky2k4

Guest
я незнаю этого может mysql хранит его неправильно(возникает при вставке) а может искажает при селекте(при получении)

например есть строка в utf8 $st из бравзера или консоли

если сделать
print($st);
mysqli_query(link, "insert ...... ('$st'))
то с Ё всё в рорядке

а если потом
досттать из базы и распечатать то нормально отображаются все символы кроме этого Ё
 

Profic

just Profic (PHP5 BetaTeam)
Хм, не совсем понятно, однако у меня есть одно предположение - проблема в кодировках: http://dev.mysql.com/doc/mysql/en/Charset.html
А конкретно - нужно смотреть на кодировку соединения/клиента
 

tony2001

TeaM PHPClub
>Дружно наблюдаем за багрепортом
.. и уходим стройными рядами на восток.

это баг MySQLi.
очень сложно проверить.
надо только попробовать то же самое с mysql_*

-~{}~ 10.11.04 19:34:

хотя, нет.
похоже, что на 5.0 такого нет.
значит, это проблема 4.1.7.
 

valyala

Новичок
Я еще раз настоятельно рекоммендую прочитать и осмыслить написанное там http://dev.mysql.com/doc/mysql/en/Charset.html
Profic, похоже, я настолько несообразительный, что не смог ничего найти по любезно предоставленной тобой ссылке, имеющего хоть какую-нибудь корреляцию с обсуждаемым здесь багом.
Буду очень благодарен, если укажешь конкретную страницу, на которой описано решение проблемы с буквой Ё в кодировке utf8.

з.ы. В глаголе "рекомендовать" одна буква "м" :)
 

Profic

just Profic (PHP5 BetaTeam)
show variables like 'character\_set\_%';
Из php, перед занесением данных в базу
?
Именно на это я намекал с самого начала.

ЗЫ. С русским у меня особых проблем нет, иногда случаются очепятки :)
 

sky2k4

Guest
Originally posted by Profic
show variables like 'character\_set\_%';
Из php, перед занесением данных в базу
?
Именно на это я намекал с самого начала.

ЗЫ. С русским у меня особых проблем нет, иногда случаются очепятки :)
Думаешь один еденственный сивол искажается из-за character_set_...?

Ничего не получется запарило, буду делать в ucs2, хоть работает без проблем )

PS ты бы не мог скинуть суюда переменные character_set_* при которых у тебя `Ё` не искажается?
 

Profic

just Profic (PHP5 BetaTeam)
Вывод вышеприведенного SQL-запроса
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_results utf8
character_set_server cp1251
character_set_system utf8
Таблица естественно была в UTF-8
 

valyala

Новичок
Profic, действительно, все дело оказалось в неправильно выставленной кодировке.
После выставления:
[sql]
SET character_set_client = utf8
SET character_set_connection = utf8
SET character_set_results = utf8
[/sql]
буква Ё перестала искажаться.
 

sky2k4

Guest
Спасибо

http://www.finalcombat.com/sky/q/q.php
я пробывал их выставлять так, но просто все старые данные сильно искажали
оказывается что надо было вставить новые данные с выставленными переменными
 
Сверху