Jump to content
  • 0

кодировка - проблема с русскими буквами в MySQL


aleksejm
 Share

Question

include("config.inc"); #Фаил с настройками для базы данных
if($db)
{
if(@mysql_select_db($dbname,$db))
{
$mq = @mysql_query("SELECT * FROM news");
if($mq)
{
while(list($id,$name,$nb,$date,$text) = mysql_fetch_row($mq))
{
echo "<table border='1'>
<tr>
<td>?$id <a href='index.php?pupil_details=$nb'>$name</a></td>
</tr>
<tr>
<td>$text</td>
</tr>
<tr>
<td>$date</td>
</tr>
</table>";
}
}
else
{
exit(mysql_error());
}
}
else
echo "<p>К сожалению подключение к базе данных в данный момент невозможно</p>";
}
else
echo("<p>В настоящий моомент сервер базы данных незоступен</p>");
if($db) mysql_close($db);

Вот есть такой код типо "мои новости".Не выводятся русские буквы.Если хаходит в MySQL Comman line с запросом SELECT * FROM news то вс? окей на черном фоне появляются привичные русские буквы а если через пхп то

?1 ? ????

?б?? ?а???в

Нашел много статей где говорилось что надо создать фаил my.cnf со следующей начинкой

# Example mysql config file.
# Copy this file to c:my.cnf to set global options
#
# One can use all long options that the program supports.
# Run the program with --help to get a list of available options


# This will be passed to all mysql clients
[client]
default-character-set=cp1251
character-sets-dir = d:/usr/local/mysql/share/charsets

[mysqld]
default-character-set=cp1251
character-sets-dir=d:/usr/local/mysql/share/charsets/
variable = innodb_lock_wait_timeout=50

[mysql]
default-character-set = cp1251

Создал поместил в папку сервера в мо?м случае это C:/alex/www/html/ но ничего не изменилось.Скорей всего я тупой и чего-то не понимаю.Помогите пожалуйста

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

какая кодировка у страницы?

добавляете данные в бд из формы со страницы?

какая кодировка у базы?

Создал поместил в папку сервера в мо?м случае это C:/alex/www/html/ но ничего не изменилось.

создавать ничего не нужно, смотрите в корень mysql, там должен быть фаил my.ini в нем и написанно нечто следуещее

default-character-set=utf8 (скорее всего у вас не utf8, потому что у меня cmd не оказывает русские символы).

Link to comment
Share on other sites

  • 0

менял на utf8 0 эмоций

Пока в бд добавил только одну запись вручную,форму сделаю потом.А как узнать какая кодировка в базе данных,знаю только show character set;.Наш?л my.ini поставил default-character-set=utf8 ничего не поменялось

Link to comment
Share on other sites

  • 0

вставил эту комманды теперь выдает

?5 ???

???? ??????! то есть просто поменялись знаки.И ещ? как только я поставил default-character-set=utf8 так я не могу добавлять в бд данные содержащие русские буквы вылетает ошибка

ERROR 1406 (22001): Data too long for column 'name' at row 1

P.S запрос был следующим insert into news (name) values ('фапаврр');

Link to comment
Share on other sites

  • 0

2aleksejm, вы наверное свою базу уже измучили переключением кодировок. Не надо тыкать куда нипоподя и незная зачем оно нужно.

Сделайте вс? с чистого листа, одну и ту же кодировку везде: в .ini файле mysql, в базе (при создании таблицы учитывая сравнение кодировки), после коннекта (установкой SET NAMES), и на страничке где это вс? выводится.

Остальное лишь зависит от кривизны рук и умения гуглить.

Больше обсуждать нечего.

Link to comment
Share on other sites

  • 0

с юникодом пока не экспериментируйте.

на странице должна быть

во время установки mysql, оставть кодировку по умолчанию.

желательно написать форму и добавлять данные в бд со страницы.

прислушайтесь к совету LokiDi L0ck, переставте mysql и создайте бд и таблицу заного.

Link to comment
Share on other sites

  • 0
Ещ? вопрос не потеме как проверить что в адресной строке кроме index.php ничего нет то есть нет "?"

$_SERVER["PATH_INFO"] ? все, что идет после имени скрипта.

$_SERVER["QUERY_STRING"] ? все, что идет после знака вопроса в запросе GET.

Link to comment
Share on other sites

  • 0

Та же проблема с кодировкой. В ini файле указана cp1251. Когда добавляю русский текст из формы - выскакивает ошибка. Когда добавляю инсертом через клиент - добавляется, но при просмотре видно только непонятный набор символов. Когда добавляю запись с помощью phpmyadmin - все в порядке и при просмотре тоже.

Link to comment
Share on other sites

  • 0

Дядя Саша, SET NAMES в скрипте стоит?

p.s. Проблема кодировок настолько изъедена только потому, что большинство кодеров никогда не уделяют и 10 минут, чтобы понять принцип работы кодировок (в частности конвертирование кодировок между скриптами и базой) - вс? наобум, только бы получилось.

Link to comment
Share on other sites

  • 0

а у меня вот такая проблема - создаю поле таблицы в phpmyadmin типа ENUM :

enum('неделя','10 дней','20 дней','месяц') character set cp1251 NOT NULL default 'неделя'

но в результате, он создает так:

enum('недел','','10 дней','20 дней','мес','ц') character set cp1251 NOT NULL default 'недел'

вобщем что-то не так с буквой "Я". подскажите пожалуйста в чем проблема...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy