1 (изменено: Berloga, 2011-08-30 17:53:59)

Тема: "Кракозябры" в БД

Кодировка базы данных - cp1251
Кодировка таблицы - cp1251
Кодировка полей - cp1251
Сравнение - cp1251
Запрос "SHOW GLOBAL VARIABLES LIKE 'char%';"
Ответ:

character_set_client    cp1251
character_set_connection    cp1251
character_set_database    cp1251
character_set_filesystem    binary
character_set_results    cp1251
character_set_server    cp1251
character_set_system    utf8
character_sets_dir    /usr/share/mysql/charsets/

Скрипт:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
 <?php
<...>
 header('Content-type: text/html; charset=windows-1251');
  $connect = mysql_connect("localhost", "root", "паролько");
  mysql_select_db('wl', $connect) or die ('Can\'t use foo : ' . mysql_error());
  mysql_query('SET NAMES \'cp1251\'');
  mysql_query('SET CHARACTER SET \'cp1251\'');
  $query = "SELECT * FROM `regwh` WHERE `nickname`='{$name}' LIMIT 1";
  <...>
   ?>

Задача скрипта - проверить есть ли такая запись в базе данных - если есть, не записывать значения, если нету - записывать значения.
Кириллицу и латынь записывает в виде "аыв"
В чем проблема?
Заранее благодарю.

2

Re: "Кракозябры" в БД

Со скриптом и таблице в БД у вас все правильно, ошибка в использовании пользователя root. Нельзя использовать root для скриптов, так как у данного пользователя всегда идет кодировка соединения с MySQL latin1 и это не настраивается. Поэтому вам всего-лишь надо завести отдельного пользователя и наделить его правами на базу данных с таблицей скрипта, только обратите внимание, что нельзя для нового пользователя отмечать привилегии из раздела "Администрирование".

Так же проверьте, чтобы файл скрипта был в ANSI, не в UTF8. Это проще всего увидеть в строке статуса редактора Notepad++.

mysql_query('SET CHARACTER SET \'cp1251\''); // Это лишняя строка, SET NAMES будет достаточно.

3 (изменено: Berloga, 2011-08-30 18:49:30)

Re: "Кракозябры" в БД

Создал нового пользователя, изменил запрос к бд, файл в utf8. Дал новому пользователю все права, кроме группы "Администратирование". Результат тот же.
http://rghost.ru/19890521/image.png
http://rghost.ru/19890671/image.png

4

Re: "Кракозябры" в БД

Berloga сказал:

файл в utf8

Файл необходимо сохранить в ANSI, иначе данные так и будут идти в utf8. В остальном проблем нет.

5

Re: "Кракозябры" в БД

Hanut сказал:
Berloga сказал:

файл в utf8

Файл необходимо сохранить в ANSI, иначе данные так и будут идти в utf8. В остальном проблем нет.

Огромное спасибо! Сказалась моя привычка читать между строк (поэтому прочитал что файл должен быть в utf8.