Нонсенс! Отправляю в Базу Mysql текст в UTF8, а записываются в базу крякозябры

R
На сайте с 30.11.2010
Offline
1
4531

Приветствую всех друзья! Вчера столкнулся с необъяснимым. Написал веб-страницу на php, сохранил её и указал в ней кодировку UTF8 ( примерно так ......charset=utf-8 ) , написал функцию для добавления текста в базу MYSQL (примерно так: добавить в базу в поле "city" значение 'Москва') и заодно прописал вывод переменой city на экран(примерно так echo $city; )

В таблице MYSQL для поля "city" указал кодировку " utf8_general_ci ".

Отправляю в базу текст в кодировке utf8, а в базу записываются крякозябры, как-будто неверная кодировака !!! При том что на экран все выводится правильно.

Если текст латинскими буквами, типа 'Moskva' добавляется нормально.

На сервере по умолчанию UTF 8.

Друзья, в чем может быть проблема !!!??? :(:(

Dreammaker
На сайте с 20.04.2006
Offline
569
#1
rustyle:
указал в ней кодировку UTF8

Что это значит в данном конкретном случае?

В какой кодировке сохранён сам php-файл?

p.s. Приветствуем и вас на форуме :)

R
На сайте с 30.11.2010
Offline
1
#2
Dreammaker:
Что это значит в данном конкретном случае?
В какой кодировке сохранён сам php-файл?

p.s. Приветствуем и вас на форуме :)

Спасибо за отклик !! Сохранил файл *.php в utf 8 и в нем указал <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Dreammaker
На сайте с 20.04.2006
Offline
569
#3

rustyle, посмотрите вот здесь http://phpfaq.ru/charset - хороший сборник советов по проблемам с кодировкой в mysql.

T
На сайте с 20.03.2007
Offline
67
Toy
#4
rustyle:
В таблице MYSQL для поля "city" указал кодировку " utf8_general_ci ".
Отправляю в базу текст в кодировке utf8, а в базу записываются крякозябры, как-будто неверная кодировака !!! При том что на экран все выводится правильно.

А где вы смотрите что в базе? Может проблема отнюдь не в сервере? :-)

L
На сайте с 07.12.2007
Offline
351
#5
rustyle:
Друзья, в чем может быть проблема !!!??? :(:(

Потому что у Вас все перепуталось.

MySQL может получать данные в одной кодировке, хранить - в другой, а отдавать - в третьей. И что там настроено по дефолту - доподлинно известно лишь одному MySQL-ю.

И всё это не имеет никакого отношения к кодировке страницы, указываемой в <meta http-equiv="Content-Type" content="text/html; charset=utf-8">, но при нестыковке - тоже будут кракозябры, уже при отображении полученных данных.

ParserYa
На сайте с 04.10.2010
Offline
29
#6

Во первых, если вы пишите ПХП, вывести мета-тэг определяющий кодировку недостаточно.. Это корректно работает только с статичными ХТМЛ страницами. Используйте вот такую конструкцию, тогда браузер будет 100% знать, что кодировка UTF-8:

header('Content-type: text/html; charset=utf-8');
.

Во вторых редактируйте ПХП файл не блокнотом, а какой-нибудь программой, которая умеет сохранять файл в различных кодировках.. Я пользуюсь Edit Plus - небольшая, быстрая и очень гибко настраиваемая программа.

В третьих перед обращением в базу данных, ей нужно дать понять, что работать мы собираемся именно в UTF-8, потому как сказал

Ladycharm:
MySQL может получать данные в одной кодировке, хранить - в другой, а отдавать - в третьей. И что там настроено по дефолту - доподлинно известно лишь одному MySQL-ю.

Для этого, после соединения с базой пишем:

mysql_query('SET NAMES utf8');
V
На сайте с 01.12.2010
Offline
1
#7

Конечно же соединение с базой смотрите и добавляйте кодировку - mysql_query('SET NAMES utf8');

R
На сайте с 30.11.2010
Offline
1
#8

Спасибо всем за ответы !!!!! Отдельное "viktoris" , "ParserYa" , "Dreammaker" ,

Все решилось банальным добавлением строчки:

mysql_query('SET NAMES utf8');

С UTF8 в базах еще не сталкивался !!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий