Что за кодировка

Feofan

Новичок
Что за кодировка

На пк стоит программа, которая общается с базой данных. У нее свой веб интерфейс и русские символы отображаются корректно. Зайдя через SQLyog(интерфейс для БД)
не могу корректно отобразить русские символы. Пробовал различные кодировки подставлять в запрос SET NAMES, результат - русские символы отображаются некорректно. Дамп базы данных через SQLyog показывает следующее:
...
SET NAMES utf8;
...
CREATE TABLE `xxx` ()
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Нужно это чтобы написать свой интерфейс для этой БД.
 

zerkms

TDD infected
Команда форума
нужно чтобы интерфейс был в той же кодировке, что и SET NAMES (конечно, при этом кодировка таблы/полей и данных в ней должны совпадать)
 

ys

отодвинутый новичок
Feofan

А открыть этот дамп и "пощелкать" кодировкой?

Вообще "DEFAULT CHARSET=latin1;" - это не есть гуд.

ссылки по теме:
http://phpclub.ru/talk/showthread.php?s=&threadid=58477&rand=93
 

Фанат

oncle terrible
Команда форума
Feofan
во-первых, выкинь всякие левые программы для работы с БД. есть консоль и дампер - вот ими и пользуйся.
для начала надо выяснить кодировку таблиц.для этого в консоли надо выполнить команду show create table table
если кодировка таки latin1, то её и надо подставлять в сет намес

ys
по-твоему, здесь нет других материалов, кроме невнятного топа на сто сообщений, большая часть из которых - мусор?

-~{}~ 30.09.08 12:09:

хехе, по ходу, я уже задавал этот вопрос кому-то год назад =)
 

zerkms

TDD infected
Команда форума
*****
схералиб? кодировка в SET NAMES должна совпадать с кодировкой клиентской программы. например консоли
 

zerkms

TDD infected
Команда форума
Код:
mysql> use test
Database changed
mysql> SET NAMES 'cp866'; /* дефолтная кодировка консоли windows */
Query OK, 0 rows affected (0.27 sec)

mysql> SELECT * FROM `a` \G
*************************** 1. row ***************************
  id: 5
text: *****ег, привет :-Р
1 row in set (0.00 sec)

mysql> SET NAMES 'cp1251'; /* совет фаната */
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM `a` \G
*************************** 1. row ***************************
  id: 5
text: ╘рэрЄху, яЁштхЄ :-╨
1 row in set (0.00 sec)

mysql> SHOW CREATE TABLE `a` \G
*************************** 1. row ***************************
       Table: a
Create Table: CREATE TABLE `a` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `text` char(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=cp1251
1 row in set (0.00 sec)
ЧЯДНТ?
 

Фанат

oncle terrible
Команда форума
мне повторить?

-~{}~ 30.09.08 12:24:

или, другими словами, "с чего ли" у тебя кодировка тестовой таблицы 1251?
 

zerkms

TDD infected
Команда форума
понял - при указании "правильной" кодировки и latin1 мускул некорректно кодирует "правильная"->latin1
а при SET NAMES `latin1` - идёт as is

посыпаю голову пеплом
 

Feofan

Новичок
Автор оригинала: ys
А открыть этот дамп и "пощелкать" кодировкой?
Открыл в word'е и попробовал практически все кодировки, за исключение японских, китайских и подобных, которые были. Результат тот же - русские символы правильно не отображаются.
Запрос show create table 'tbl' показывает, что кодировка latin1 и show variables like "character_set_database" тоже latin1
 

Фанат

oncle terrible
Команда форума
Молодец, за неделю осилил один ответ на свой вопрос.
Глядишь, к Новому году прочтешь и остальные
 

Фанат

oncle terrible
Команда форума
рассказывай, что именно пробовал и что получил в итоге.
будем искать, в каком месте ты допустил ошибку
ну, или, что более вероятно - что именно не попробовал, и будем тебя тыкать в это носом.
ведь это нам нужно, чтобы твоя программа заработала.
 
Сверху