1

Тема: Проблема с кодировкой

у меня в phpmyadmin то что занесено в базу русскими буквами отображается крокозяблами, когда вывожу данные на страницу через пхп скрипт то все отображается нормально. изучил много форумов и ни одно решение не помогло
выполнил код SHOW VARIABLES LIKE 'character%' вот что получилось
Variable_name     Value
character_set_client     utf8
character_set_connection     utf8
character_set_database     utf8
character_set_filesystem     binary
character_set_results     utf8
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /opt/RZmysql5/share/mysql/charsets/

отображаются подобные вещщи      ???°???????° . расшивровал декодером выдал результат CP1252 ? UTF-8
в базе там у таблиц в поле Сравнение latin1_german1_ci

# Apache/1.3.37 (Unix)
# Версия MySQL-клиента: 5.0.51
MySQL-кодировка:  UTF-8 Unicode (utf8)
что мне нужно сделать чтобы увидеть нормальные русские буквы? помогите пожалуйста, я уже на грани нервного срыва

2

Re: Проблема с кодировкой

FRIE
Здесь задача должна решаться в два этапа, сперва необходимо сделать дамп, перекодировать его и вновь импортировать в исправленном виде. Второй этап будет заключаться в установке кодировки соединения с MySQL, для чего необходимо знать: есть ли доступ к конфигурационному файлу MySQL и какой скрипт используется.

Для перекодировки:
1) Скопируйте из дампа структуру любой таблицы содержащей поля с кириллицей.
2) Откройте дамп в Notepad++ и посмотрите в статусной строке что там указано: ANSI либо UTF8.

Для второго этапа:
1) Выполните запрос (обратите внимание на оператор GLOBAL):
SHOW GLOBAL VARIABLES LIKE 'char%';
2) В какой кодировке страницы сайта?

3

Re: Проблема с кодировкой

Hanut сказал:

1) Скопируйте из дампа структуру любой таблицы содержащей поля с кириллицей.

а как это сделать? я не нашел. просто я новичек

4 (изменено: FRIE, 2009-03-01 17:09:32)

Re: Проблема с кодировкой

1)в статусной строке notepad++ стоит UTF-8

2)результат выполнения SHOW GLOBAL VARIABLES LIKE 'char%';
Variable_name     Value
character_set_client     latin1
character_set_connection     latin1
character_set_database     latin1
character_set_filesystem     binary
character_set_results     latin1
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /opt/RZmysql5/share/mysql/charsets/

5 (изменено: Hanut, 2009-03-01 18:49:56)

Re: Проблема с кодировкой

У меня похожая проблема . В phpmyadmin то что занесено в базу русскими буквами отображается нормально, когда вывожу данные на страницу через пхп скрипт то все отображается нормально, кроме данных из таблиц  опроса скрипта голосования Advanced  Poll 2.08. Латинские буквы отображаются нормально, а русские ????????????
выполнил код SHOW VARIABLES LIKE 'character%'
Variable_name     Value
character_set_client    latin1
character_set_connection    latin1
character_set_database    latin1
character_set_filesystem    binary
character_set_results    latin1
character_set_server    latin1
character_set_system    utf8
character_sets_dir    /usr/share/mysql/charsets/

Таблиц: 14     Всего    78    MyISAM    cp1251_bin

Пожалуйста, создайте отдельную тему для рассмотрения конкретно вашей проблемы.

6

Re: Проблема с кодировкой

FRIE
Чтобы скопировать структуру таблицы, откройте дамп и найдите строки примерно такого вида:

CREATE TABLE IF NOT EXISTS `test_table` (
  `field1` tinytext NOT NULL,
  `field2` varchar(10) NOT NULL,
... и т.д.
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

Ниже будут строки вставки данных начинающиеся с INSERT INTO `test_table`. Найдите там крякозябы и скопируйте, как они видны в дампе (только пару слов).

Не забудьте указать в какой кодировке страницы сайта. Это видно в браузере (в IE правой кнопкой на странице). И что это за скрипт: форум или еще что-то?

7

Re: Проблема с кодировкой

Hanut сказал:

FRIE
Чтобы скопировать структуру таблицы, откройте дамп и найдите строки примерно такого вида:

CREATE TABLE IF NOT EXISTS `test_table` (
  `field1` tinytext NOT NULL,
  `field2` varchar(10) NOT NULL,
... и т.д.
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

Ниже будут строки вставки данных начинающиеся с INSERT INTO `test_table`. Найдите там крякозябы и скопируйте, как они видны в дампе (только пару слов).

Не забудьте указать в какой кодировке страницы сайта. Это видно в браузере (в IE правой кнопкой на странице). И что это за скрипт: форум или еще что-то?

|???°???????° вот это чудо. страница в кодировке юникод utf-8. что за скрипт? какой скрипт? это просто таблица в базе, там ни форума ни сайта еще нету, я только пока еще изучаю

Сообщение добавлено Sun Mar  1 20:08:31 2009
данные неправильно отображаются в пхпмайадмине. на сайте потом когда скри птом вывожу выводит все нормально

8

Re: Проблема с кодировкой

FRIE
CREATE TABLE скопируйте из дампа. Там указаны кодировки и иногда сравнение, что необходимо для перекодировки.

Если это ваш скрипт, то БД и таблицы должны быть созданы в кодировке utf8 (сравнение utf8_general_ci).
В скрипте, сразу после функции mysql_connect() следует добавить строку определяющую кодировку соединения с MySQL:

mysql_query('SET NAMES utf8');

Если данные, которые находятся в БД нужны, то дамп следует перекодировать и импортировать заново, или если данные не нужны, то удалите БД и таблицы и пересоздайте их с кодировкой utf8. Крякозябы работать не будут.

9

Re: Проблема с кодировкой

Hanut сказал:

FRIE
CREATE TABLE скопируйте из дампа. Там указаны кодировки и иногда сравнение, что необходимо для перекодировки.

Если это ваш скрипт, то БД и таблицы должны быть созданы в кодировке utf8 (сравнение utf8_general_ci).
В скрипте, сразу после функции mysql_connect() следует добавить строку определяющую кодировку соединения с MySQL:

mysql_query('SET NAMES utf8');

Если данные, которые находятся в БД нужны, то дамп следует перекодировать и импортировать заново, или если данные не нужны, то удалите БД и таблицы и пересоздайте их с кодировкой utf8. Крякозябы работать не будут.

Спасибо огромное. помогло все в совокупности, тоесть надо сделать так- создать новую таблицу и везде указать utf8_unicode_ci
и в скрипте обязательно выставить mysql_query('SET NAMES utf8'); сразу после строки соединения с базой smile)))))

10

Re: Проблема с кодировкой

FRIE сказал:

mysql_query('SET NAMES utf8');

иногда одной этой приписки не достаточно!
нужно прописывать все возможные соприкосновения с utf-8
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8' );
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"' );
http://www.eco-money.ru/forum/topic?id=6&p=1#p8