|
|
|
| В MySQL в некоторые столбцы введены слова по русски, но их не отображает браузер
На запрос
<?php
$dblocation = "localhost";
$dbname = "ompd";
$dbuser = "root";
$dbpasswd = "159753";
$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер mySQL</p>";
exit();
}
if (!mysql_select_db($dbname,$dbcnx) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
$user = mysql_query("SELECT name from author");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
echo mysql_result($name, 0);
?>
|
Выводит:
| |
|
|
|
|
|
|
|
для: Mpak
(19.10.2006 в 20:59)
| | у вас наверняка PHP 5.x и MySQL 4.x ...
тогда проблема в кодировке...
попробуйте поставить 'cp1251_general_ci' | |
|
|
|
|
|
|
|
для: KEPZ
(19.10.2006 в 22:23)
| | А куда это поставить?
'cp1251_general_ci' | |
|
|
|
|
|
|
|
для: Mpak
(19.10.2006 в 20:59)
| | У вас текст и таблица какие кодировки имеют? Как заполняли базу данных из какого клиента? | |
|
|
|
|
|
|
|
для: cheops
(19.10.2006 в 22:59)
| | MySQL Server 5.0
MySQL Command Line Client
Я не знаю как кодировку узнать...
Когда заполнял таблицу (в клиенте) вводил некоторые данные на русском языке.
Цифры отображает нормально... | |
|
|
|
|
|
|
|
для: Mpak
(20.10.2006 в 00:08)
| | Понятно, тексто у вас сейчас в кодировке cp866 (DOS), MySQL Command Line Client плохо приспособлена для работы в Windows, так как ей невозможно практически передать параметры. Обычно, когда работают с русским текстом при помощи консольных инструментов MySQL запускают командную строку (Пуск->Программы->Стандартные->Командная строка), переходят в каталог С:/mysql/bin, меняют кодировку консоли при помощи команды
и запускают mysql.exe в ручную
или если у пользователя root имеется пароль
Далее настраивают кодировку соединения при помощи запроса
и вводят русский текст, при этом кодировка по умолчанию в таблицах MySQL должна быть в также cp1251, это можно проверить выполнив запрос
PS Возможно вам также будут интересны статьи
http://www.st-host.ru/article/?id_article=14
http://www.st-host.ru/article/?id_article=15 | |
|
|
|
|
|
|
|
для: cheops
(20.10.2006 в 12:43)
| | Не получается, при Ваших настройках MySQL не могу вводить русские символы он вводит какую-то гадость, и по умолчанию у меня кодировка latin1 | |
|
|
|
|
|
|
|
для: Mpak
(21.10.2006 в 13:41)
| | Кодировку следует выставить cp1251, у вас в командной строке (в свойствах) какой шрифт стоит точечный или Lucida Console (следует выбрать последний). | |
|
|
|
|
|
|
|
для: cheops
(21.10.2006 в 13:48)
| | В свойствах cmd установил Lucida Console
Першел в папочку
.../ mysql/mysql server 5.0/bin>
|
выставил кодировку chcp 1251
зашел в MySQL создал тестовую БД.
Лог то что писал далее:
mysql> create table q (
-> win_name text character set cp1251
-> );
Query OK, 0 rows affected (0.08 sec)
mysql> insert into q values ('Кодировка Windows');
Query OK, 0 rows affected (0.03 sec)
mysql> select * from q;
+-------------------+
| win_name |
+-------------------+
| Кодировка Windows |
+-------------------+
1 row in set (0.00 sec)
mysql> quit;
Bye
|
Содержание файла mysql_connect.php :
<?php
$dblocation = "localhost";
$dbname = "qwer";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер mySQL</p>";
exit();
}
if (!mysql_select_db($dbname,$dbcnx) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
$ver = mysql_query("SELECT win_name from q");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
@mysql_query ("set names 'cp1251_general_ci'");
echo mysql_result($ver, 0);
?>
|
В браузере выдается:
????????? Windows | |
|
|
|
|
|
|
|
для: Mpak
(21.10.2006 в 18:32)
| | 2Mpak А как насчет хорошё подумать?
В этом вашем коде:
$ver = mysql_query("SELECT win_name from q");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
@mysql_query ("set names 'cp1251_general_ci'");
echo mysql_result($ver, 0);
|
Вы сначало выполняете mysql_query("SELECT win_name from q");
а уже потом делаете @mysql_query ("set names 'cp1251_general_ci'");
а надо так:
<?php
$dblocation = "localhost";
$dbname = "qwer";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер mySQL</p>";
exit();
}
if (!mysql_select_db($dbname,$dbcnx) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
@mysql_query ("set names 'cp1251_general_ci'");
$ver = mysql_query("SELECT win_name from q");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
echo mysql_result($ver, 0);
?>
|
| |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 19:43)
| | К сожалению не помогает...:( | |
|
|
|
|
|
|
|
для: Mpak
(21.10.2006 в 20:34)
| | , | |
|
|
|
|
|
|
|
для: Mpak
(21.10.2006 в 20:34)
| | ЭЭЭЭ....
Из строчки
@mysql_query ("set names 'cp1251_general_ci'");
|
убрал _general_ci
Так что получилось:
@mysql_query ("set names 'cp1251'");
|
И Все получилось!!!
Спасибо LuxeMate , сheops, KEPZ, Trianon!!!!
Ждите качественно сайта :)))))))))))))))) | |
|
|
|
|
|
|
|
для: Mpak
(21.10.2006 в 13:41)
| | в кодировке latin1 никогда не было, нет, и не будет русских символов. | |
|
|
|
|
|
|
|
для: Trianon
(21.10.2006 в 14:36)
| | У меня аналогичная проблемма,в БД всё выставил на cp_1251 ,но - у меня при записи русских символов пишет что слово слишком длинное,когда в нем 3 буквы а в эту строку можно все 100 запихать,а в браузер выводит только знаки вопроса,хотя кодировка сайта
Кирилица(Windows)...
В чем у меня проблемма? | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 14:55)
| | Эм..ну так,никто не знает в чем фокус? | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 16:50)
| | и SET NAMES '1251' выполняется при подключении? | |
|
|
|
|
|
|
|
для: Trianon
(21.10.2006 в 16:54)
| | Нет,т.к незнаю что это за штука и с чем её едят...
Не могли бы вы пояснить как иправить этот фокус? | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 17:15)
| | У меня только одна ошибка осталась,ввожу хоть 1 символ кирилицей,он мне сразу пишет что Data too long for column...
В чем дело?? | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 19:09)
| | ЭЭЭЭ....
Из строчки
@mysql_query ("set names 'cp1251_general_ci'");
|
убрал _general_ci
Так что получилось:
@mysql_query ("set names 'cp1251'");
|
И Все получилось!!!
Спасибо LuxeMate , сheops, KEPZ, Trianon!!!!
Ждите качественно сайта :)))))))))))))))) | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 19:09)
| | >У меня только одна ошибка осталась,ввожу хоть 1 символ кирилицей,он мне сразу пишет >что Data too long for column...
>В чем дело??
У меня та же проблема!
Что делать? Эксперементировать с кодировками? | |
|
|
|
|
|
|
|
для: ddhvvn
(21.10.2006 в 21:53)
| | Какой тип данных имеет эта самая колонка в бд? | |
|
|
|
|
|
|
|
для: ddhvvn
(21.10.2006 в 21:53)
| | Попробуйте сразу после подключения к базе выполнить.
<?
@mysql_query ("set names 'cp1251'");
?>
|
| |
|
|
|
|
|
|
|
для: st.Ass
(21.10.2006 в 22:01)
| | Хе...вот я решил попробовать в своей гостевой зарегать юзера с ником написаным кирилицей,и получил вот что
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation '='Out of range value adjusted for column 'usr_id' at row 1
|
PS делал всё о чем сказано в это теме.
В чем же тогда проблемма? | |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 22:30)
| | collations измените на cp1251_general_ci в бд при помощи пхпмайадмин | |
|
|
|
|
|
|
|
для: st.Ass
(21.10.2006 в 22:01)
| | Мне вроде как помогло! :) | |
|
|
|
|
|
|
|
для: ddhvvn
(22.10.2006 в 09:54)
| | Да не фига не помогло! В консоли кирилица выглядит как "??????", а при получении через скрипт вообще выдается предупреждение, что поле пусто! | |
|
|
|
|
|
|
|
для: ddhvvn
(22.10.2006 в 10:22)
| | Для того, чтобы не возникали знаки вопроса вместо русского текста, необходимо и в консоли в скрипте настраивать кодировку соединения
| |
|
|
|
|
|
|
|
для: cheops
(22.10.2006 в 12:11)
| | Слава богу! Я свою ошибку исправил. Все работает! | |
|
|
|
|
|
|
|
для: ddhvvn
(22.10.2006 в 10:22)
| | Попробуй сделать так:
Зайди в MySQL через командную строку,
Зайди в свойства командной строки,
И измени шрифт с точечного на Lucida Console
Мне помогло. | |
|
|
|
|
|
|
|
для: Mpak
(22.10.2006 в 12:16)
| | Тут что все пользуются командной строкой? | |
|
|
|
|
|
|
|
для: LuxeMate
(22.10.2006 в 13:27)
| | угу:))) | |
|
|
|