|
|
|
| Здравствуйте!
Не получается добиться нормального отображения информации, записанной в бд.
На странице, в META теге установлено charset=windows-1251, базу данных (и все таблицы с столбцами) привожу к кодировке cp1250_general_ci.
Есть форма регистрации, из которой ФИО записывается в соответствующие таблицы. При авторизации на странице нечитаемые символы, вместо ФИО.
Как привести все к одной кодировке? В чем я не прав?
Тут собственно проблемная страница. | |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 00:36)
| | >привожу к кодировке cp1250_general_ci.
1. Как это делаете (опишите подробнее)?
2. Почему 1250, а не 1251? Или это опечатка? | |
|
|
|
|
|
|
|
для: cheops
(22.02.2012 в 00:58)
| | действительно опечатался - 1251. Менял в phpMyAdmin, вот такие запросы:
ALTER DATABASE `user_auth` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE `user_auth` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE `user_info` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE `user_auth` CHANGE `pass` `pass` VARCHAR( 32 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL;
ALTER TABLE `user_info` CHANGE `first_name` `first_name` VARCHAR( 20 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL ;
|
| |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 01:21)
| | при соединении с базой данных указываете кодировку? | |
|
|
|
|
|
|
|
для: Valick
(22.02.2012 в 07:29)
| | выполнил несколько запросрв сразу же после mysql_select_db:
Mysql_query("set character_set_client='cp1251'");
Mysql_query("set character_set_results='cp1251'");
Mysql_query("set collation_connection='cp1251'");
При отображении информации из бд запросил текущую кодировку mysql_client_encoding() поразился - latin1 | |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 11:20)
| | окончательно сбит с толку.
проверяю как создавались бд и таблицы
show create database `test`;
show create table `user_info`;
|
на выходе:
test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET cp1251 */
user_info CREATE TABLE `user_info` (
`user_id` int(6) NOT NULL,
`first_name` varchar(20) NOT NULL,
`middle_name` varchar(20) NOT NULL,
`last_name` varchar(20) NOT NULL,
`email` varchar(20) NOT NULL,
`image` varchar(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251
|
смотрю кодировки:
show variables like "char%"
|
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
|
нигде и в помине нет latin1....
потом пытаюсь в phpMyAdmin выполнить запрос
set names 'cp1251';
show variables like "char%";
|
в таком случае кодировки соединения, результата, клиента устанавливаются в cp1251, но как я понял, только на время соединения, т.к. при следующем запросе show variables устанавливается кодировка в utf8.
Но откуда же взялась latin1? | |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 23:29)
| | Приведу фрагмент кода, может в нем гвоздь
class ps_DB {
private $lid = 0; // Ccылка на идентификатор соединения
private $qid = 0; // Ссылка на идентификатор запроса
private $row; // Текущая запись в запросе
private $record = array(); // Текущая строка в запросе
private $error = "";
private $errno = "";
// При создании объекта устанавливаем соединение
function __construct() {
if ($this->lid == 0) {
$this->lid = mysql_connect(DB_HOST,DB_USER,DB_PWD);
if (!$this->lid) {
$this->halt("connect(" . DB_HOST . ",USER,PASSWORD) failed.");
}
if (!@mysql_select_db(DB_NAME,$this->lid)) {
$this->halt("Cannot connect to database ".DB_NAME);
return 0;
}
mysql_query("SET NAMES `cp1251`");
}
return $this->lid;
}
function __destruct() {
mysql_close($this->lid);
}
...
дальше методы для запроса и т.д.
...
|
.... $db = new ps_DB;....
|
Может где то тут ошибка? Возможно, думаю что установленно соединение, тогда как его нет?
Хотя далее по коду функция mysql_real_escape_string() выполняется без ошибок. | |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 01:21)
| | Изменение кодировки в базах данных, таблицах и полях, не перекодирует ранее помещенную информацию - кодировка внутри таблиц остается старой. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2012 в 10:08)
| | после каждого изменения регистрирую нового пользователя и смотрю на получившиеся результаты - пока не могу добиться нужного | |
|
|
|
|
|
|
|
для: Jackson
(22.02.2012 в 11:22)
| | вопрос снимается, не в мускуле дело - обрабатывал данные функцией htmlentities(). | |
|
|
|