1

Тема: Вместо русских букв - нечитаемые символы

Добрый день!
Пожалуйста помогите разобраться.  При выводе браузером данных из БД, вместо русских символов отображаются - квадраты.

2

Re: Вместо русских букв - нечитаемые символы

Сервер: localhost via TCP/IP
Версия сервера: 5.1.40-community
Версия протокола: 10
Пользователь: yulia@localhost
MySQL-кодировка: UTF-8 Unicode (utf8)
Веб-сервер: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
Версия MySQL-клиента: mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
PHP расширение: mysql
phpMyAdmin: версия 3.3.9.2

3

Re: Вместо русских букв - нечитаемые символы

Настройте по статье http://php-myadmin.ru/learning/instrument-mysql.html  конфиг mysql
перепустите сервер, далее проверьте кодировку в базе данных и реально в какой кодировке сами данные - они должны совпадать.

Отредактировано DmitryV (2011-03-02 21:24:33)

Facebook Twitter

4

Re: Вместо русских букв - нечитаемые символы

Дмитрий, спасибо Вам за помощь! Все было сделано по инструкции, в результате кодировки базы данных и самих данных совпадают - cp1251_general_ci
Но на странице браузера, русский текст все равно отображается некорректно.

Сам файл my.ini почему-то отсутствует.... Файлы my-huge.ini, my-innodb-heavy-4G.ini, my-large.ini, my-medium.ini, my-small.ini, my-template.ini - есть, а my.ini - нет.  Или я что-то не так понимаю?

Подскажите пожалуйста новичку! ))

5

Re: Вместо русских букв - нечитаемые символы

Mernik пишет:

Сам файл my.ini почему-то отсутствует

У phpMyAdmin есть вкладка "Переменные", найдите значение переменной basedir. Там и будет my.ini.
В файле my.ini, в разделе [mysqld] надо добавить строку:

init-connect="SET NAMES cp1251"

Так же проверьте наличие строки:

character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.1/share/charsets"

Путь должен указывать на каталог с файлами описаний кодировок.

ВКонтакте Facebook Twitter

6

Re: Вместо русских букв - нечитаемые символы

Уважаемые Hanut и DmitryV, вот чем закончились ночные мучения:
1. во вкладке "Переменные" phpMyAdmin нахожу значение переменной basedir. Оно значится как \usr\local\mysql-5.1\ , но не меняется (информация представлена в виде таблицы).
2. В папке \usr\local\mysql-5.1\ есть только файл под названием "My" типа "SpeedDial" - не открывается. 
3. В файлах my-huge.ini, my-innodb-heavy-4G.ini, my-large.ini, my-medium.ini, my-small.ini, my-template.ini - в раздел [mysqld] были поставлены строчки:
init-connect="SET NAMES cp1251"
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.1/share/charsets"
4. В результате: значения переменных character set client, character set connection, character set results, collation connection - utf8_general_ci
на экране - ��������
плаваю в этих кодировках, а видеть нормальный текст в браузере так хочется !!!

7

Re: Вместо русских букв - нечитаемые символы

5. Подскажите, команда     mysql_query ("SET NAMES cp1251");  , прописанная в php.файле  равнозначна изменениям этих настроек в my.ini ?  Если да, то этот метод тоже уже опробован и не дает нужного результата  (((

8

Re: Вместо русских букв - нечитаемые символы

2. В папке \usr\local\mysql-5.1\ есть только файл под названием "My"

Если там нет файла поищите там файл он должен быть если у вас UNIX в имени my.cfg в Win my.ini
Вот его и надо редактировать а файлы с именами my-huge.ini, my-innodb-heavy-4G.ini, my-large.ini, my-medium.ini, my-small.ini, my-template.ini - это файлы примеров, у Вас вообще что Денвер, так снесите его если он и установите нормально окружение по статьям: http://php-myadmin.ru/learning/instrument-intro.html
PS: и уточните что у вас Win или Nix запутался то у вас пути \usr\local\mysql-5.1\ то Вы прописываете character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.1/share/charsets"

Отредактировано DmitryV (2011-03-03 10:24:00)

Facebook Twitter

9

Re: Вместо русских букв - нечитаемые символы

Mernik пишет:

В папке \usr\local\mysql-5.1\ есть только файл под названием "My" типа "SpeedDial" - не открывается.

Это он. Конфигурационный файл у вас my.cnf. Надо в операционной системе вывести все расширения файлов и затем открыть файл текстовым редактором.
Control Panel -> Folder Options -> View -> Hide extensions for known file types (снять галочку).

Mernik пишет:

Подскажите, команда     mysql_query ("SET NAMES cp1251");  , прописанная в php.файле  равнозначна изменениям этих настроек в my.ini ?

Равнозначна. Если в phpMyAdmin вы видите кириллицу и таблицы имеют сравнение cp1251_general_ci - то все будет работать, обязательно.

В корне хоста создайте файл .htaccess и добавьте в него строку:

PHP_VALUE default_charset windows-1251

Как я понял, это какой-то набор компонентов веб-сервера для Windows собранный на западе, поэтому с кириллицей он изначально не работает.

И еще один момент. Вы когда прописываете строку вида:
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.1/share/charsets"
проверьте путь C:/Program Files/MySQL/MySQL Server 5.1/share/charsets, есть ли там файлы с кодировками. Иначе эта строка не имеет смысла.

Советую пока оставить редакцию my.cnf, и сперва попробовать прописать mysql_query ("SET NAMES cp1251"); сразу после вызова mysql_connect.

ВКонтакте Facebook Twitter

10

Re: Вместо русских букв - нечитаемые символы

PS: и уточните что у вас Win или Nix запутался то у вас пути \usr\local\mysql-5.1\ то Вы прописываете character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.1/share/charsets"

Операционная система установлена Win XP. Один путь прописан с обратными слэшами - он взят из раздела "Переменные" phpmyadmin.

Советую пока оставить редакцию my.cnf, и сперва попробовать прописать mysql_query ("SET NAMES cp1251"); сразу после вызова mysql_connect.

Команда mysql_query ("SET NAMES cp1251"), прописанная сразу после соединения, не дает результата.
Файл my.cfg отредактирован с помощью блокнота - и тоже ничего ((((

11

Re: Вместо русских букв - нечитаемые символы

У Вас Denver? если да то убейте его и нормально разверните окружение по статьям выше их приводил Вам, на экране - �������� это где видно в скрипте сайта или phpmyadmin? Так же возможно данные сами влиты не в верной кодировке, если в скрипте это, то название скрипта скажите.
PS: могу соединиться по скайпу и сам разобраться, мой скайп указан на моем сайте.

Отредактировано DmitryV (2011-03-03 18:46:13)

Facebook Twitter

12

Re: Вместо русских букв - нечитаемые символы

�������� - эти символы видны только вместо русских букв в браузере, когда информация вытаскивается из базы данных. В phpmyadmin все отображается корректно.

Убить денвер попробую.....

А если данные влиты в неверной кодировке, то как это исправить?

В характеристиках на главной странице phpmyadmin: "MySQL-кодировка: UTF-8 Unicode (utf8)"
Сопоставление соединения с MySQL:  cp1251_general_ci

13

Re: Вместо русских букв - нечитаемые символы

так при чем здесь mysql и phpmyadmin если в нем все коректно, тут дело не в них - а в самих скриптах и реально в данных, может быть и что сами данные в таблицах не в той кодировке что сама таблица и т д, что у вас за скрипты такие?
От простого не верного кода до перекодирования если это западный движок и тут уже нужно его русифицировать.
Я помню как русифицировал игровые движки западные по контре, там сплошная перекодировка шла.

Отредактировано DmitryV (2011-03-03 19:17:18)

Facebook Twitter