1 (изменено: allex, 2008-03-13 01:31:42)

Тема: кодировка, блин

Привет
установил mysql по этой статье http://php-myadmin.ru/learning/instrument-mysql.html (сделал все как там написано). Когда делаю вставку(и выбор) через консоль, русские буквы в нем отображаются корректно, а когда вывожу через скрипт или phpMyAdmin такая бяка:  ®ў®Ґ ҐйҐ. Однако, когда вбиваю через phpmyadmin в нем отображается все хорошо, а через скрипт и консоль не хорошо.
Что делать? если mysql установил правильно, значит либо апач либо пхп?
Apache 2.2.8 / PHP 5.2.5 / WinXP SP2

-- updated

не из-за того ли это, что я установил mysql-5.0.18-win32 вместо MySQL 5.0.51a

2

Re: кодировка, блин

поставил версию 5.0.51a-win32, не помогло sad

3

Re: кодировка, блин

allex
Статья расчитана на использование windows-cp1251.

В какой кодировке страница скрипта и таблицы в которые пишутся данные? Если вам необходимо использовать utf8, то в конфигурационном файле MySQL необходимо заменить cp1251 на utf8.

4 (изменено: allex, 2008-03-13 15:14:29)

Re: кодировка, блин

Я использую простой скрипт для проверки

<html>
<head>
<title>title</title>
</head>
<body>

<?php

$dbconnect = mysql_connect('localhost', 'root', 'root');
mysql_select_db("af", $dbconnect);

$charset = mysql_client_encoding($dbconnect);
printf ("current character set is %s<br>", $charset);

$select = mysql_query("SELECT * FROM films", $dbconnect);

while($string = mysql_fetch_assoc($select)){
    echo "$string[num] - $string[name] - $string[latname]<br>";
}

?>

</body>
</html>

результат:

current character set is latin1
3 - ?????3 - new3
1 - ?????1 - new1

а в phpmyadmin нормально:

3    новое3    new3
1    новое1    new1

функция mysql_client_encoding возвращает кодировку соединения - latin1
пробовал поставить utf8, все также
наверно мне лучше обратиться на форум пхп-программистов?:)

5 (изменено: allex, 2008-03-13 15:31:20)

Re: кодировка, блин

добавил mysql_query("SET NAMES cp1251", $dbconnect) перед селектом и все стало нормально
может подскажите, можно ли сделать так чтобы не приходилсь все время делать такой запрос?
а то на 4 версии mysql все и так было хорошо..
п.с. mysql_client_encoding плохая функция, она все время возвращает latin1

6

Re: кодировка, блин

allex
Во первых, не подключайте скрипты под root.
Во вторых, как вы могли установить MySQL по статье "Инструментарий веб-разработчика" и при этом проигнорировать настройки указанные там для my.ini?

7 (изменено: allex, 2008-03-13 17:09:59)

Re: кодировка, блин

я сделал это когда устанавливал mysql:

Откройте для редактирования файл "my.ini".
В раздел [client], после строки:
port=3306
Добавьте строку определяющую каталог содержащий файлы описания кодировок:
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.0/share/charsets"
В раздел [mysqld], после строки:
port=3306
Добавьте следующие две строки, первая из которых вам уже известна, вторая – устанавливает кодировку в которой данные передаются MySQL:
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.0/share/charsets"
init-connect="SET NAMES cp1251"
Далее, найдите строку:
default-storage-engine=INNODB
Замените изначально устанавливаемый тип таблиц:
default-storage-engine=MYISAM

такое ощущение, что mysql игнорирует эти настройки, но ведь такого быть не может...?

8

Re: кодировка, блин

allex сказал:

такое ощущение, что mysql игнорирует эти настройки, но ведь такого быть не может...?

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

9

Re: кодировка, блин

Для скриптов всегда создавайте отдельного пользователя наделяя его только необходимыми привилегиями.

действительно, это помогло
спасибо таким людям как вы(профессионалам) за то, что вы помогаете таким людям как мы(чайникам) big_smile
благодарю за помощь