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

Форум MySQL

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

 

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

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

тема: проблемы с кодировкой(
 
 автор: nikita2206   (18.02.2009 в 20:01)   письмо автору
 
 

вобщем у меня класическая проблема в кодировке.
только при выборке из БД.
во всех полях, в БД, стоит cp1251_general_ci, вся страница отправляется с windows-1251(в <meta> стоит charset=windows-1251).
у меня на локалхосте работает всё отлично, но у хостера эта проблема....
в итоге отображаются знаки вопроса...

  Ответить  
 
 автор: Trianon   (18.02.2009 в 20:37)   письмо автору
 
   для: nikita2206   (18.02.2009 в 20:01)
 

Везде? или только в тех местах, что выводятся из БД?


meta в любом случае нужно убрать, и поставить вместо этого AddDefaultCharset Windows-1251 в .htaccess

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 20:55)   письмо автору
 
   для: Trianon   (18.02.2009 в 20:37)
 

именно вывод из бд, при том в бд всё согласовано, все, абсолютно все, поля идут с кодировкой cp1251_general_ci

  Ответить  
 
 автор: Trianon   (18.02.2009 в 21:36)   письмо автору
 
   для: nikita2206   (18.02.2009 в 20:55)
 

что показывает запрос
SHOW VARIABLES LIKE '%CHAR%'

будучи выполненным из php-скрипта?

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 21:43)   письмо автору
 
   для: Trianon   (18.02.2009 в 21:36)
 

насколько я понимаю его так надо вызывать?
<?
$result 
mysql_query('SHOW VARIABLES LIKE \'%CHAR%\'');
$row mysql_fetch_array($result);
echo 
$row[0].' : '.$row[1];


вот что говорит: character_set_client : latin1

  Ответить  
 
 автор: Trianon   (18.02.2009 в 21:49)   письмо автору
 
   для: nikita2206   (18.02.2009 в 21:43)
 

while( $row = mysql_fetch_array($result) )
echo $row[0].' : '.$row[1] . '<br>';

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 21:55)   письмо автору
 
   для: Trianon   (18.02.2009 в 21:49)
 

вот:
character_set_client : latin1
character_set_connection : latin1
character_set_database : cp1251
character_set_filesystem : binary
character_set_results : latin1
character_set_server : utf8
character_set_system : utf8
character_sets_dir : /usr/share/mysql/charsets/

  Ответить  
 
 автор: Trianon   (18.02.2009 в 21:58)   письмо автору
 
   для: nikita2206   (18.02.2009 в 21:55)
 

кодировку клиентского соединения вообще-то устанавливать нужно по всем правилам.
SET CHARACTER SET 'cp1251'
ну или SET NAMES 'cp1251' на худой конец...

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 22:16)   письмо автору
 
   для: Trianon   (18.02.2009 в 21:58)
 

всё понял, сначало просто недошло что в каждом запросе это должно происходить....
спасибо

  Ответить  
 
 автор: Trianon   (18.02.2009 в 22:17)   письмо автору
 
   для: nikita2206   (18.02.2009 в 22:16)
 

>всё понял, сначало просто недошло что в каждом запросе это должно происходить....

ничего подобного.

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 22:36)   письмо автору
 
   для: Trianon   (18.02.2009 в 22:17)
 

да нет, как раз подобно...) нужно при каждом запросе скрипта делать подобный запрос: SET NAMES `cp1251`....
иначе просто неработает...

  Ответить  
 
 автор: Trianon   (18.02.2009 в 22:46)   письмо автору
 
   для: nikita2206   (18.02.2009 в 22:36)
 

Запрос нужно выполнить один раз после установления соединения и выбора БД. Один раз на соединение.
После этого хоть сотню SQL-запросов издавай в рамках установленного соединения.

А что запрос скрипта вызывает необходимость установить соединение - это дело другое.

Если Вы пять раз в процессе обработки одного запроса скрипта будете устанавливать соединение , Вам пять раз придется настраивать кодировку. Пять, а не один.

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 22:51)   письмо автору
 
   для: Trianon   (18.02.2009 в 22:46)
 

я вас понял, давно, просто обьяснить несмог....)

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

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