Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL: Проблема с кодировками

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Syllion

Цитата:
да, в коде встречается "htmlentities"

http://us3.php.net/htmlentities
charset укажите..  
 
либо попробовать заменить на htmlspecialchars

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:19 22-06-2008 | Исправлено: Cheery, 20:25 22-06-2008
Syllion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А не подскажите как правильно следут указывать?
Просто файлов с этой функцией очень много
Вот пример:
if(!empty($_GET['tag'])) eb_tag(htmlentities($_GET['tag'],ENT_QUOTES));
как добавить кодировку. По ссылке ходил, но не совсем понял форму зыписи.

Всего записей: 194 | Зарегистр. 07-06-2007 | Отправлено: 20:31 22-06-2008 | Исправлено: Syllion, 20:35 22-06-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Syllion

Цитата:
А не подскажите как правильно следут указывать?

ну там же все написано
 

Цитата:
if(!empty($_GET['tag'])) eb_tag(htmlentities($_GET['tag'],ENT_QUOTES,'cp1251'));



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:47 22-06-2008
Syllion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А нет ли другого способа исправить кодировку (Код перепроверял повторно - везде все указано.)? Добавил указание кодировке к каждому вызову htmlentities, но тем не менее новости по прежнему отображаются не верно. Хотя в остальных местах буквы теперь видны.
Код перепроверял повторно - везде все указано.
 
ОЧень похожу что fckeditor пишет не в той кодировке.

Всего записей: 194 | Зарегистр. 07-06-2007 | Отправлено: 22:01 22-06-2008 | Исправлено: Syllion, 22:06 22-06-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Syllion

Цитата:
Хотя в остальных местах буквы теперь видны.

смотрим код страницы - в каком виде идет текст.. в htmlentities или нет.. если да, то проверяем в каком виде в базе.. если там нормально, то ищем где преобразовывается в коде

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:24 22-06-2008
Syllion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все, большьшое спасибо за терпение. проблему решил обновлением fckeditor

Всего записей: 194 | Зарегистр. 07-06-2007 | Отправлено: 22:40 22-06-2008
x_Stalker_x



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Я в соседней ветке спрашивал по поводу восстановления утерянных данных после ошибки  Warning: #1366 Incorrect integer value: '\xD1\x87\xD1\x82\xD0\xBE
Здесь ветка вроде более живая. Может кто-то подскажет возможно ли восстановление или это уже железно потерянные данные.
Заранее Спасибо за инфу!

----------
Мир устроен просто, но не примитивно.

Всего записей: 363 | Зарегистр. 12-10-2005 | Отправлено: 18:04 09-10-2008
x_Stalker_x



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скорей всего ответ я не получу в ближайшее время. Ну да ладно. Вопрос больше не актуален.
Я вбивал данные в фаерфоксе, а он помнит слова, которые я вбивал. Так что благодаря мудрости разработчиков фокса удалось все восстановить.
Я так думаю, что восстановить другими средствами мне бы не удалось так как данных попросту не было в базе данных. Только вопросики. latin1 не поддерживает русские буквы.

----------
Мир устроен просто, но не примитивно.

Всего записей: 363 | Зарегистр. 12-10-2005 | Отправлено: 11:45 13-10-2008 | Исправлено: x_Stalker_x, 11:46 13-10-2008
Ternik



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deleted

Всего записей: 763 | Зарегистр. 25-09-2002 | Отправлено: 14:07 13-10-2008 | Исправлено: Ternik, 08:00 24-08-2009
Ternik



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плз. Есть данные BLOB, при переносе через экспорт, преобразуются вот в такую штуку  

Код:
 
0x3c703e266e6273703b3c2f703e0d0a3c703e3c...
 

импортирую в кодировке cp1251, а получается все равно utf8 и даже в менеджере такая вот каша:

Цитата:
 
<p>Спасибо! Все получилось отлично!</p>
 

Что делать? Как внести данные нормально?
 
Добавлено:
проблема решилась, нужно было в phpMyAdmin при экспорте убрать галочку

Цитата:
 
Использовать шестнадцатеричное отображение для полей
 

Всего записей: 763 | Зарегистр. 25-09-2002 | Отправлено: 07:58 24-08-2009
Vasiliy_1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
использование 1251 - это привязка к русскому языку, а если понадобится раширить сайт, добавить англ. версию? прийдется переделывать... лучше везде использовать utf-8
 
----------
*******





имитация подписи запрещена

Всего записей: 3 | Зарегистр. 31-08-2009 | Отправлено: 11:45 31-08-2009 | Исправлено: Cheery, 16:36 31-08-2009
FastCat



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть у меня сайт на Joomla. Кодировка используется win-1251.
 
Хостер что то с собой сделал, что сайт стал выглядеть как на фото (см.вложение).  
 
   
 
Поддержка пока молчит
В браузере перепробовал все доступные кодировки. Не помогает.
 
Вот кусок mysql базы:
 

Код:
DROP TABLE IF EXISTS `jos_core_acl_aro_sections`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jos_core_acl_aro_sections` (
  `section_id` int(11) NOT NULL auto_increment,
  `value` varchar(230) NOT NULL default '',
  `order_value` int(11) NOT NULL default '0',
  `name` varchar(230) NOT NULL default '',
  `hidden` int(11) NOT NULL default '0',
  PRIMARY KEY  (`section_id`),
  UNIQUE KEY `value_aro_sections` (`value`),
  UNIQUE KEY `jos_gacl_value_aro_sections` (`value`),
  KEY `hidden_aro_sections` (`hidden`),
  KEY `jos_gacl_hidden_aro_sections` (`hidden`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;
/*!40101 SET character_set_client = @saved_cs_client */;  

 
Что то я не пойму откуда там закомментированные строки взялись ? Что они значят ?

Всего записей: 966 | Зарегистр. 06-01-2002 | Отправлено: 17:37 20-02-2010 | Исправлено: FastCat, 17:41 20-02-2010
testerNJ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня тоже аналогичная проблема.  
MySQL connection collation: utf8_general_ci
MySQL charset: UTF-8
Сайт двуязычный: англо(поддерживается браузером Western Windows-1252) и русский (Cyrillic Windows-1251).
При вводе информации с сайта на английском и русском - все в порядке. Проблема только в phpmyAdmin. Вся введенная информация с русской части, отображаеться в DB в виде  
"&#234;&#238;&#242;&#238;&#240;&#251;&#233; &#239;&#238;&#231;&#226;&#238;&#235;&#232;&#242; &#241;&#238;&#226;&#229;&#240;&#248;&#224;&#242;&#252;".
Когда хотел исправить PHP, то нашел только одно место с mysql_connect.
Файл называется query_factory.php
Вот кусок кода с этого файла.
 
"function connect($zf_host, $zf_user, $zf_password, $zf_database, $zf_pconnect = 'false', $zp_real = false) {
//@TODO error class required to virtualise & centralise all error reporting/logging/debugging
    $this->database = $zf_database;
    if (!function_exists('mysql_connect')) die ('Call to undefined function: mysql_connect().  Please install the MySQL Connector for PHP');
    if ($zf_pconnect != 'false') {
      $this->link = @mysql_connect($zf_host, $zf_user, $zf_password, true);
    } else {
    // pconnect disabled ... leaving it as "connect" here instead of "pconnect"
      $this->link = @mysql_connect($zf_host, $zf_user, $zf_password, true);
 
       
    }
    if ($this->link) {
      if (@mysql_select_db($zf_database, $this->link)) {
        $this->db_connected = true;
        return true;
      } else {
        $this->set_error(mysql_errno(),mysql_error(), $zp_real);
        return false;
      }
    } else {
      $this->set_error(mysql_errno(),mysql_error(), $zp_real);
      return false;
    }
  }  
 
  function selectdb($zf_database) {
    @mysql_select_db($zf_database, $this->link);
  }"
Подстановка "mysql_query("set CHARACTER SET cp1251"); " у меня ничего не дала.
Может у кого-то есть какая-то идея.
 
Добавлено:
К сожалению даже в этом форуме не получается правильно отобразить информацию в DB.
У меня там слова с точками с верху.
Цитата:
 &#204;&#224;&#235;&#229;&#237;&#252;&#234;&#232;&#229; &#240;&#229;&#234;&#238;&#236;&#229;&#237;&#228;&#224;&#246;&#232;&#232; &#228;&#235;&#255; &#237;&#224;&#248;&#232;&#245; &#234;&#235;&#232;&#229;&#237;&#242;&#238;&#226;!


Всего записей: 9 | Зарегистр. 23-06-2006 | Отправлено: 00:49 15-03-2010
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Собственно, проблема: добавление

Код:
header('Content-type: text/html; charset=utf-8');

в скрипты, генерирующие страницы сайта, выставляя верную кодировку
страниц, "калечит" все тексты, взятые из базы под MySQL 5, записи которой
кодированы в utf8_general_ci (с utf8_unicode_ci то же самое).  
 
Если строчку удалить, тексты из базы начинают отображаться правильно,
но при этом с "кракозябрами" отображаются статические части страницы.
 
С базой соединияюсь при помощи PDO,         

Код:
$pdo_object = new PDO("mysql:host=хост; dbname=база", логин, пароль);
$sql = "SELECT * FROM таблица ORDER BY id";
$result = $pdo_object->prepare($sql);
$result->execute();

Всего записей: 10299 | Зарегистр. 15-02-2004 | Отправлено: 23:28 28-05-2011 | Исправлено: GeMir, 23:34 28-05-2011
sitd777



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
были ли выполнены запросы
 
 
SET CHARACTER SET 'utf8'
SET NAMES 'utf8'
 
???
скорее всего нет..

Всего записей: 14 | Зарегистр. 31-05-2011 | Отправлено: 16:30 31-05-2011
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sitd777
Спасибо за помощь! Я использую PDO, так что нагуглил следующее решение своей проблемы

Код:
$pdo_object = new PDO("mysql:host=хост; dbname=база", логин, пароль, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

Решение работает, единственное с чем проблема - с датами, которые берутся из базы
в виде timestamp'ов и конвертируются в подходящий формат при помощи

Код:
setlocale(LC_ALL, "de_DE@euro", "de_DE", "de", "ge");
$date = strftime("%e. %B", strtotime($timestamp));

Всего записей: 10299 | Зарегистр. 15-02-2004 | Отправлено: 18:14 31-05-2011
sitd777



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если честно, то это не важно чем вы подсоединяетесь к базе
 
как вы написали  

Код:
 
$pdo_object = new PDO("mysql:host=хост; dbname=база", логин, пароль);
$sql = "SELECT * FROM таблица ORDER BY id";
$result = $pdo_object->prepare($sql);
$result->execute();
 

 
точно так же можно сразу после коннекта запустить нечто вроде

Код:
 
$sql = "SET NAMES 'utf8'";
$result = $pdo_object->prepare($sql);
$result->execute();
 

должно работать..  
но если есть возможность как вы сделали указать запрос SQL для инициализации - тоже хорошо
 
-------------------------------------------------------------------------------------
 
что до дат, то в MySQL есть функции  для работы не только с обычными датами но и с timestamp
 
например функция FROM_UNIXTIME() вернет вам дату в формате YYYY-MM-DD HH:MM:SS

Код:
 
mysql> SELECT FROM_UNIXTIME(1196440219);
        -> '2007-11-30 10:30:19'
 

 
которую дальше можно сконвертировать в любой удобный формат функцией DATE_FORMAT()

Код:
 
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
        -> 'Sunday October 2009'
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%d.%m.%Y %H:%i:%s');
        -> '04.10.2009 22:23:00'
 

 
и еще много интересного о работе с датами тут -  

Код:
 
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
 

 
! RTFM !

Всего записей: 14 | Зарегистр. 31-05-2011 | Отправлено: 11:15 01-06-2011
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sitd777

Цитата:
что до дат, то в MySQL есть функции  для работы не только с обычными датами но и с timestamp

Ну так я с ними и работаю. Вроде как. Только в PHP.
В переменной $timestamp сохраняется сам timestamp, который впоследствии
используется в коде для <time></time>, а строка $date, возвращаемая strftime(),  
отображается на странице.

Всего записей: 10299 | Зарегистр. 15-02-2004 | Отправлено: 11:26 01-06-2011 | Исправлено: GeMir, 11:30 01-06-2011
sitd777



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну да можно отформатировать дату в PHP , можно подготовить в MySQL запросе и PHP дату получит уже в готовом виде. разницы нет.

Всего записей: 14 | Зарегистр. 31-05-2011 | Отправлено: 11:16 06-06-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL: Проблема с кодировками


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru