|
|
|
|
|
для: DRUG1
(10.01.2010 в 06:43)
| | проблема решена!
оказывается по умолчанию кодировка соединения и т.д.и т.п. была:
...
| character_set_client | latin1
| character_set_connection | latin1
| character_set_database | utf8
| character_set_filesystem | binary
| character_set_results | latin1
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/
| collation_connection | latin1_swedish_ci
| collation_database | utf8_general_ci
| collation_server | latin1_swedish_ci
...
по этому сами данные были в utf8, а метаданные таблички говорили, что она в
latin1, и соединение в latin1. короче, всё экспортировал так:
ssh:~ # mysqldump --default-character-set=latin1 -u root -p -h localhost -B database | sed 's/latin1/utf8/' > /home/ssh/dump.sql
теперь русский текст отображаться нормально, далее залил в бд этот бекап и вуууоля =))))) | |
|
|
|
|
|
|
|
для: .heed
(10.01.2010 в 12:24)
| | по умолчанию - latin1 | |
|
|
|
|
|
|
|
для: .heed
(10.01.2010 в 12:24)
| | >Может SHOW CREATE TABLE `ИмяТаблицы`
>покажет почему так
вот:
mysql> SHOW CREATE TABLE text;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| text | CREATE TABLE `text` (
`ID` int(11) NOT NULL auto_increment,
`text` varchar(255) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
>при
>>character_set_connection = utf8
>вроде SET names 'utf8' по умолчанию
>, если нет ещё каких-то запросов типа init-connect в my. ini
нет, нету, да и даже если было бы не в этом вопрос, в бд уже целый год так записывается русский текст, надо просто не знаю перековертить или чтонеть хз =( правда уже всё возможное наверно пробовал... =((( | |
|
|
|
|
автор: .heed (10.01.2010 в 12:24) |
|
|
для: DRUG1
(10.01.2010 в 06:45)
| | Может SHOW CREATE TABLE `ИмяТаблицы`
покажет почему так
при
>character_set_connection = utf8
вроде SET names 'utf8' по умолчанию
, если нет ещё каких-то запросов типа init-connect в my. ini | |
|
|
|
|
|
|
|
для: DRUG1
(10.01.2010 в 06:43)
| | ps. блин что то у вас на форуме не отоброжается то что я вижу у себя, тут как "и" .... хммм....
вот есть идея:
рас браузер по ПЕРВОМУ ВАРИАНТУ всё отображается нормально, то наверно есть и способ всё оттуда вытащить в таком виде который мы наблюдаем на странице (ПЕРВЫЙ ВАРИАНТ), а затем уже нормально перелапатить БД в UTF-8 - т.к. русские символы UTF-8 в среде cp1251 будут отображаться как символы + русские буквы, сейчас же мы видим символы + латинские буквы - это на лицо неверная кодировка, как вот её вернуть в нормальное состояние не понятно.
понятно что точно не так:
*символы + латинские буквы (utf8) > конвертирование > символы + русские буквы (utf8)*
тут наверно скорее как я писал вышет так будет:
*символы + латинские буквы (utf8) > конвертирование > cp1251*
-- но вот КАК?! :( | |
|
|
|
|
|
|
| есть БД:
запрос show variable; показывает:
character_set_client = utf8
character_set_connection = utf8
character_set_database = utf8
character_set_filesystem = binary
character_set_results = utf8
character_set_server = utf8
character_set_system = utf8
collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci
делал в putty (SSH)...
*************************************
ПЕРВЫЙ ВАРИАНТ:
когда выполняю запрос в php (сам php файл в UTF-8):
mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");
в БД записывается это: привет < смотрю через phpMyAdmin.
на странице (сам файл страницы в UTF-8 так же установлен content="text/html; charset=utf-8") вывожу это, вижу нормальный русский текст, тобишь "Привет".
ВТОРОЙ ВАРИАНТ:
делаю "насильно" после соединения с БД:
mysql_query("SET names 'utf8' COLLATE 'utf8_general_ci'");
и выполняю тот же выше приведенный запрос:
mysql_query("INSERT INTO `database`.`table` (`text`) VALUES ('Привет');");
в БД записывается слово "Привет" < смотрю через phpMyAdmin. вывожу это на страницу, вижу нормальный русский текст... в то время как то что я записывал ранее выводится уже как привет
*************************************
объясните мне пожалуйста почему так происходит при ПЕРВОМ ВАРИАНТЕ?
как перекодировать БД если туда всё записано по ПЕРВОМУ ВАРИАНТУ - вернее, объясните сам алгоритм, что на что кодировать?
есть альтернатива перекодированию?
PS. модуль php:
iconv - есть;
php-mbstring - нету, возможности установить - нету;
- для чего это? ответ: по первому варианту в БД с установленной utf8_general_ci поиск русских символов регистроЗАВИСИМ, когда по ВТОРОМУ ВАРИАНТУ поиск регистроНЕзависим.
огромное спасибо за ранее!!! | |
|
|
|
|