Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка mysql 
V
    Опции темы
usverishe
Дата 5.9.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



Добрый день, есть такая проблема, текст записываеться и выводиться из бд в виде непонятных кракокозябл.
кодировка на странице windows-1251 в бд cp1251-general_ci.
Вся странность в том, что если поставить вид страницы в UTF-8, всё нормально.

Убедительная просьба, в поиск не посылать, перепробовал всё и 

Код

mysql_query ("set NAMES cp1251");

и 
Код

mysql_query("SET CHARACTER SET cp1251");


 smile 

помогите новичку плз.


Это сообщение отредактировал(а) usverishe - 5.9.2006, 14:09
PM MAIL   Вверх
shopen
Дата 5.9.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



а вот так пробовал?
Код

mysql_query('SET character_set_results="cp1251"');



PM MAIL   Вверх
usverishe
Дата 5.9.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



shopen,  пробовал, и так:

Код

mysql_query("set character_set_client='cp1251'");
mysql_query("set character_set_results='cp1251'");
mysql_query("set collation_connection='cp1251_general_ci'");

пробовал...  smile 
PM MAIL   Вверх
shopen
Дата 5.9.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



ты базу импортировал с локально хоста или как?
PM MAIL   Вверх
usverishe
Дата 5.9.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



она пока там и лежит.
....[censored 6] фигня какая-то но всё само-собой исправилось....
хрен знает что происходит?!

Это сообщение отредактировал(а) usverishe - 5.9.2006, 14:31
PM MAIL   Вверх
shopen
Дата 5.9.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



ну и гуд smile а вот при переезде на хостинг с локального хоста, у тебя это проблема ещё встанет, если хост не заточен под 1251 кодировку. smile
PM MAIL   Вверх
usverishe
Дата 5.9.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



И как её решить? (на будушее)
PM MAIL   Вверх
shopen
Дата 5.9.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



при импорте через пхпадмин указываешь кодировку 1251 и после соединения с базой пишешь mysql_query('SET character_set_results="cp1251"');
такая вот общая схема
PM MAIL   Вверх
usverishe
Дата 5.9.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



спасибо за совет, а проблема вновь вернулась и появляеться через раз?!?!? т.е. один раз нормальный текст, один раз нет, самое обидное, что немогу понять что меняеться!
PM MAIL   Вверх
shopen
Дата 5.9.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



думаю если через раз появляется, значит проблема не в базе.
ты под каким браузером смотришь? попробуй на разных
PM MAIL   Вверх
usverishe
Дата 5.9.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



попробовал под лисой, и оперой та-же фигня  smile 
PM MAIL   Вверх
shopen
Дата 5.9.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 31.8.2006

Репутация: нет
Всего: нет



ну блин, незнаю, через пхп админ данные в таблицах нормально отображаются?
и где ты пишешь: mysql_query('SET character_set_results="cp1251"'); ?
сразу после соединения с базой?
PM MAIL   Вверх
Гриша
Дата 5.9.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: нет
Всего: 1



--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
usverishe
Дата 5.9.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



Гриша, спасибо конечно, но я всегда пользуюсь я.ру перед тем, как задать вопрос.  smile 

shopen, в phpmyadmin те-же крокозябли smile 

mysql_query('SET character_set_results="cp1251"');
пищу сразу после конекта, может писать после выбора бд?
PM MAIL   Вверх
-=Ustas=-
Дата 5.9.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Если ты делаешь дамп с локли, то нафиг, никаких всяких там пхпмайадминов!!!
Код

mysqldump -u user -p database -Q -r dump.sql --default-character-set=cp1251


Теперь. Сервак твой или нет? Если нет, то желательно было бы узнать настройки my.cnf

Как ты заливаешь этот дамп? Шел-доступ есть?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
usverishe
Дата 6.9.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.8.2006
Где: город над вольной Невой

Репутация: нет
Всего: 1



-=Ustas=- , shopen  Спасибо учту на будуюшее,

косяк оказался в самой странице, стоило убрать meta с charset, и всё заработало smile 
PM MAIL   Вверх
MaliceInWonderland
Дата 19.4.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



аналогичная проблема. 

кодировка базы MySQL: cp1251


php
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
mysql_query('SET NAMES "cp1251"')

итог: ????­?®? ?¤ ??

mysql_query('SET character_set_results="cp1251"')+ 
Цитата

убрать meta с charset, и всё заработало

пробовала. 


Это сообщение отредактировал(а) MaliceInWonderland - 19.4.2007, 23:55
PM MAIL   Вверх
-=Ustas=-
Дата 20.4.2007, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



А если так:
Код

mysql_query( 'SET NAMES cp1251' ) or die( mysql_error() );



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
capitan
Дата 20.4.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 2
Всего: 13



Народ, не подключайтесь к базе с рутовым паролем. Создайте пользователя с урезанными правами, перегрузите мускул и будет Вам счастье. 
Цитата

MySQL 4.1 на внутреннем уровне работает с кодировкой UTF-8 и перекодирует результат в требуемую форму (в нашем случае windows-1251) непосредственно перед передачей его клиенту (т.е. скрипту). В некоторых случаях оказывается, что кодировка клиента (скрипта) «не доходит» до MySQL. Соответственно, сервер передает «вопросики». Можно применить одно из следующих решений. 1. Вписать в скрипт что-то вроде: mysql_query(«SET NAMES cp1251») . Это надо делать сразу же после подключения к MySQL. Проблема исчезнет (хотя правильнее будет установить переменные сессии). 2. Вписать init-connect="SET NAMES cp1251" в my.ini и перезапустить MySQL. Однако это сработает только для соединений, которые проходят НЕ под root-пользователем. Скрипты, коннектящиеся к базе под root, по-прежнему будут получать неверную кодировку. Лучше всего будет все-таки завести новую базу и пользователя и забыть о проблеме подключаясь через его аккаунт. Чтобы диагностировать проблему, выполните в скрипте запрос SHOW VARIABLES LIKE 'char%'.

PM MAIL WWW ICQ   Вверх
MaliceInWonderland
Дата 20.4.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Цитата

mysql_query( 'SET NAMES cp1251' ) or die( mysql_error() );

сообщения об ошибке не выдает.
Цитата

‘????­?®? 


залила базу еще раз. установила кодировку MySQL: cp1251

заработало. но при условии:
<meta http-equiv="Content-Type" content="text/html; charset=cp866">

почему DOS?

Это сообщение отредактировал(а) MaliceInWonderland - 20.4.2007, 19:20
PM MAIL   Вверх
MaliceInWonderland
Дата 20.4.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 19.4.2007

Репутация: нет
Всего: нет





cp1251 устанавливаю для конкретной базы.
alter DATABASE db DEFAULT CHARACTER SET cp1251.

думаю проблема здесь:
пытаюсь изменить кодировку
Цитата

SET character_set_client= cp1251; 
SET character_set_connection =cp1251; 
SET character_set_database =cp1251; 
SET character_set_results =cp1251; 
SET character_set_server =cp1251; 
SET character_set_system =utf8;


проверяю SHOW VARIABLES LIKE `char%';
кодировка изменилась с latin1 на cp1251.

прописываю В my.cnf MYSQL 4.1.
[mysqld]
default-character-set=cp1251

перезапускаю mysql command line client.

изменения не сохранились. HOW VARIABLES LIKE `char%' выдает latin1







PM MAIL   Вверх
INHazeR
Дата 22.4.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 8.12.2006

Репутация: нет
Всего: нет



Нашел вот такое решение проблемы:

Если Вам необходимо хранить в базе данных строки в кодировке, отличной от английской, то придется немного разобраться с кодировками - дело достаточно тонкое и не совсем тривиальное. 

Итак, по умолчанию для всех обьектов базы устанавливается кодировка latin1, и если в поле с такой кодировкой запихнуть русские данные, то вместо символов Вы будете видеть знаки вопроса. Для избежания данной проблемы достаточно установить при создании базы нужную Вам кодировку:

CREATE DATABASE yourbase CHARACTER SET ‘cp1251′

в этом случае все поля по умолчанию будут иметь именну эту кодировку, если при создании базы или поля не указать иную. Тоесть, при создании базы с нуля достаточно укзать ее кодировку и все будет нормально.
Но если Вы модифицируете уже созданную ранее базу, то изменение ее кодировки не приведет к изменению кодировок уже созданных полей - их придется менять вручную, посредством следующей комманды:

ALTER TABLE students CHANGE name name varchar(100) CHARACTER SET ‘cp1251′

Типы полей надо оставить прежними, нужно только изменить кодировку(CHARACTER SET).

Для корректной работы с кодировками осталась одна вещь - после установления соединения необходимо указать требуемую кодировку с помощью запроса:

SET NAMES cp1251;

Кстати, полный список кодировок, которые поддерживает Ваш сервер, можно получить с помощью комманды

SHOW CHARACTER SET;

Таким образом, моя БД в cp1251, страница тоже в cp1251:
Код

<meta http-equiv="Content-Type" content="text/html; charset=cp1251" />


Результат - непонятные символы. Если сменить кодировку страницы на cp866, то нормально отображаются результаты запроса из БД (в правильной кодировке), но вся остальная страница, разумеется, отображается неверно.
Итак, может ли кто-нибудь дать этому внятное объяснение? smile 
PM MAIL   Вверх
Glip
Дата 22.4.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



есть вероятность что перекодирует веб сервер.

http://www.faqs.org/rfcs/rfc2616.html
Код

3.4 Character Sets

   HTTP uses the same definition of the term "character set" as that
   described for MIME:

точнее кодировка задается в заголовке формируемом веб сервером.


у apache можно почитать про AddDefaultCharset
у nginx -  charset



--------------------
user posted image
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1492 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.