Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Буквы в виде вопросов (что-то с кодировкий)
 
 автор: bas01   (26.08.2008 в 14:52)   письмо автору
 
 

Базу поставил нормально, там в свойствах стоит default character set cp1251,
страницы php отражаются тоже нормально с нормальной кодировкой,
но то что из базы берется почему-то в виде вопросов на странице отображается.
В чем может быть дело?

  Ответить  
 
 автор: OLi   (26.08.2008 в 14:54)   письмо автору
 
   для: bas01   (26.08.2008 в 14:52)
 

Напиши следующее в файле подключения к базе:
$link=@mysql_connect("localhost","Ник")or die("Не могу соединиться с базой"); 
@mysql_query ("set character_set_client='cp1251'");
@mysql_query ("set character_set_results='cp1251'");
@mysql_query ("set collation_connection='cp1251_general_ci'");
@mysql_select_db("Твоя база",$link);

И все заработает!

  Ответить  
 
 автор: mihdan   (27.08.2008 в 01:29)   письмо автору
 
   для: OLi   (26.08.2008 в 14:54)
 

Зачем же так усложнять?
Достаточно

<?php
SET NAMES 
'cp1251'
?>

  Ответить  
 
 автор: Trianon   (28.08.2008 в 09:58)   письмо автору
 
   для: mihdan   (27.08.2008 в 01:29)
 

по теме:
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
SET NAMES - очень спорный запрос. Он обычно делает слегка не то.
В отличие от SET CHARACTER SET .

[поправлено модератором]

  Ответить  
 
 автор: cheops   (28.08.2008 в 12:32)   письмо автору
 
   для: Trianon   (28.08.2008 в 09:58)
 

Вообще говоря да, такое лихое использование SET NAMES с кодировкой cp1251 обусловлено тем, что русскому языку вполне подходит сортировка по умолчанию cp1251_general_ci, для другого языка или кодировки этот оператор может не покатить.

  Ответить  
 
 автор: Trianon   (28.08.2008 в 12:47)   письмо автору
 
   для: cheops   (28.08.2008 в 12:32)
 

сортировка - полбеды.
Но установка collation влечет за собой смену самого charset - смену таблицы преобразования.
И если SET CHARACTER SET подстраивает связь под оба хвоста - и под клиента и под базу,
то SET NAMES насильно заставляет сервер считать, что база совсем не в той кодировке, что создана, а вовсе даже - в клиентской.
И далеко не всегда это соответствует действительности.
Одно дело , когда база с mysql 3-4.0 портировалась в 4.1 - 5.
И совсем другое, когда кодировка самой базы поставлена вполне корректно, просто она другая - не та, что у клиента (читай "что у php-скрипта").

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования