101

Re: Содержимое таблиц отображается кракозяброй.

Разобрался. Оставалось только 1 строчку в файл настроек прописать.
В сентябре они планируют перестраивать справку, но пока напишу здесь. Частично повторю Ваши слова, чтоб всё было в 1 месте. Итак, как вывод:
[center][size=24]При установке форума SMF v1.1.5 русской версии Win-1251 НЕОБХОДИМО сделать следующее:[/size][/center]
1. ПЕРЕД установкой - прописать в файле my.cnf следующие строки:

[client]
default-character-set = cp1251
default-collation = cp1251_general_ci

[mysqld]
default-character-set = cp1251
default-collation = cp1251_general_ci
init-connect="SET NAMES cp1251"

2. Тоже ПЕРЕД установкой - прочитать этот топик и выполнить инструкции под пунктом 1.
3. Сразу ПОСЛЕ установки форума добавить в файл Settings.php следующую строку:

$db_character_set = 'cp1251';

P.S.: простите за ламеризм, но думаю, раз я с этой проблемой столкнулся, значит, столкнётся и кто-то другой, кто тоже не силён в PHP и MySQL. Ему такой ответ не помешает.

102

Re: Содержимое таблиц отображается кракозяброй.

Lex-BY
Большое спасибо за ваши уточнения и желание помочь другим пользователям SMF.

1) На самом деле, для корректной работы форума в cp1251, достаточно только прописать в конфигурационный файл Settings.php строку:

$db_character_set = 'cp1251';

Данная переменная содержит кодировку, которую форум будет подставлять во внутренний запрос SET NAMES (установка кодировки соединения с MySQL), таким образом в конфигурационном файле MySQL, директива init-connect уже не нужна.
2) Директива default-collation зависит от default-character-set и автоматически подставляется, поэтому тоже может считаться лишней.
3) Единственное изменение, которое может понадобиться произвести в конфигурационном файле MySQL - это установка директивы default-character-set, но и она необходима только в том случае, когда таблицы будут создаваться скриптом форума, что может произойти только при свежей его установке.

Поэтому даже при отсутствии доступа к конфигурационному файлу MySQL, вы всегда сможете нормально установить форум SMF в кодировке cp1251 прописав одну единственную строку $db_character_set = 'cp1251';.

103 (изменено: Lex-BY, 2008-07-20 14:38:13)

Re: Содержимое таблиц отображается кракозяброй.

По поводу collation'а - я ставил конкретный, потому как обнаружил 2 коллейшина. Поэтому явно указал, какой мне нужен.
Про init-connect - учтёмс.
Всё остальное - просто собрал в 1 месте, чтоб не перелистывать все 5 страниц.

104

Re: Содержимое таблиц отображается кракозяброй.

Добрый день! Появилась проблема с «кракозяброй» … Сам я чайник в phpmyadmin и в mysql …Поэтому, ребята, если не трудно помогите решить проблему, постараюсь описать проблему как можно лучше. Есть сайт, на dle  7 … При установлении движка dle ё отображается нормально… Но если устанавливаю модуль files 2.5 или 2.7 free то на сайте появляются всякие «кракозябры»  вот, модуль я установил правильно… И по этому виной этого глюка является база данных… Таблица в cp1251, php 5 версии, mysql 5, phpMyAdmin - 2.11.7.1,  вот, при запросе «SHOW VARIABLES LIKE 'character%'» пишет

Variable_name     Value
character_set_client     utf8
character_set_connection     cp1251
character_set_database     cp1251
character_set_filesystem     binary
character_set_results     utf8
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

Глюки: во первых глюк на сайте, полностью не отображает русские буквы + не грузится админка движка! Пожалуйста помогите! Буду очень вам признателен…

105

Re: Содержимое таблиц отображается кракозяброй.

amba004
С упомянутым скриптом не знаком и ничем конкретным помочь не смогу. Поищите форум пользователей скрипта, уверен, там проблему помогут решить быстрее.

1) Поищите в конфигурационных директивах скрипта те что относятся к установке кодировки соединения с MySQL и попробуйте установить там cp1251.
2) Есть ли у вас доступ к конфигурационному файлу MySQL (my.cnf)?
3) Как выглядят крякозябы на сайте и как эти же данные выглядят в БД при просмотре с помощью phpMyAdmin?
4) Удостоверьтесь, что все таблицы и БД (!) имеют кодировку cp1251.
5) Покажите вывод запроса:

SHOW GLOBAL VARIABLES LIKE 'char%';

106

Re: Содержимое таблиц отображается кракозяброй.

Насчёт скрипа, я обращался на форум создателя, и он мне написал, что у меня проблема с кодировкой MYSQL … И ответ надо искать в кодировке…
Сейчас база данных пустая и я удалил полностью этот движок и с базы данных и с виртуального диска… Так вот, решил создать всё по но вой, не подскажите, какой кодировкой надо воспользоваться, что на сайте русские буквы отображались корректно …
Ответы на ваши вопросы:
1)    Можно подробнее? (я чайник в этом деле и если не трудно напишите все простыми словами)
2)    Не знаю точно, но я установил phpmyadmin к себе на сервер, так же версию по старее установлена у моего хост провайдера… А в какой папке находится файл my.cnf?
3)    На сайте в админке движка выводил полностью крякозябы в браузере OPERA а в Мазиле вообще не отображал страницу … А в БД я не знаю… Я удалил всё и теперь не могу показать…
4)    При установлении движка у меня спрашивалось, в какой кодировке залить таблицы в БД и я всегда выбирал cp1251 …
5)    запрос SHOW GLOBAL VARIABLES LIKE 'char%'

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/


Hanut cпасибо вам за ответ.

107

Re: Содержимое таблиц отображается кракозяброй.

amba004
Если предполагается использовать кодировку windows-1251, то БД необходимо создать выбрав сравнение cp1251_general_ci.

1) Здесь я помочь не могу, возьмите документацию скрипта, или идите на форум создателя и узнайте есть ли директива устанавливающая кодировку соединения с MySQL. Необходимо чтобы скрипт при соединении выполнял запрос вида - SET NAMES cp1251;. У большинства скриптов такая директива есть. Объясните разработчику, при необходимости, что настройки сервера выдают кодировку соединения latin1 (character_set_connection latin1), из-за чего кирилица в cp1251 ложится в БД в виде крякозябов.
2) Обычно на Linux серверах конфигурационный файл MySQL находится в etc/my.cnf.
4) Кроме кодировки таблиц, существует общая кодировка БД, просмотреть ее можно выбрав в phpMyAdmin БД и перейдя на страницу "Операции", там снизу будет в выпадающем списке указано сравнение, которое и является кодировкой.
5) Вы сами видите, что везде стоит latin1, поэтому если не будет указана кодировка создаваемой БД или таблицы, то она создастся в latin1. Но самое проблематичное - это то что в данном случае кодировка соединения тоже latin1 (character_set_connection), а ее можно изменить либо глобально из конфигурационного файла MySQL (при наличии доступа к оному), либо используя предусмотренную директиву скрипта (конечно, если она действительно предусмотрена). Третий вариант зависит от опыта - самому менять код скрипта заставляя его работать в нужной кодировке.

При наличии доступа к конфигурационному файлу MySQL, можно внести глобальные изменения кодировки.
В разделе [mysql] должна быть строка:
default-character-set=cp1251

В разделе [mysqld] должны быть установлены следующие две строки:
init-connect="SET NAMES cp1251"
default-character-set=cp1251

Но имейте в виду, что это настройки глобальные, то есть после их установки они будут действовать на все ваши скрипты, а значит они все должны быть в cp1251.

108

Re: Содержимое таблиц отображается кракозяброй.

То есть получается, если я хочу избавится от крякозябов мне нужно при установлении движка в настройках mysql выбрать кодировку latin1? Но что мне нужно сделать, чтоб я мог спокойно работать с кодировкой cp1251? У меня нету доступа к файлу my.cnf  Насчёт 4 пункта, можно по подробнее я не много не понял вас… И объясните если не трудно по подробнее 5 пункт, второй и третий вариант. Hanut благодарен вам за ваши ответы!

109

Re: Содержимое таблиц отображается кракозяброй.

amba004 сказал:

То есть получается, если я хочу избавится от крякозябов мне нужно при установлении движка в настройках mysql выбрать кодировку latin1?

Нет, конечно. Ваша задача - установить кодировку соединения c MySQL в cp1251 (сейчас она latin1). БД, таблицы и сами данные должны быть в cp1251 и никак иначе.

По четвертому пункту.
В phpMyAdmin выбрав БД вы видите справа список всех таблиц, рядом с которыми их кодировку - там везде должно быть cp1251_general_ci. При переходе на страницу "Операции" снизу вы увидите раздел "Сравнение" с выпадающим списком, где так же должно быть выбрано cp1251_general_ci. Это важно, так как я подозреваю, что кодировка БД может быть latin1.

По пятому пункту второй вариант я не могу объяснить - здесь вы должны либо смотреть документацию скрипта, либо общаться с разработчиком/пользователями.

Третий вариант заключается в следующем: ищем в скрипте функцию подключения mysql_connect(), сразу после которой необходимо выполнить запрос устанавливающий кодировку соединения.
Пример:

<?php
mysql_connect('... ;
mysql_query('SET NAMES cp1251');
?>

110

Re: Содержимое таблиц отображается кракозяброй.

Поставил везде кодировку cp1251_general_ci но, не помогло… Установил движок, на сайте всё отображает нормально, полностью русскими буквами … Но теперь не работает админка вообще … Я уверен это всё из-за базы данных. Может сделать дамп? И там что-то отредактировать или вставить??? При установки движка установил кодировку cp1251. Но после того как сделал дамп и посмотрел структуру, там выводилось много крякозябов …

111

Re: Содержимое таблиц отображается кракозяброй.

amba004 сказал:

Поставил везде кодировку cp1251_general_ci но, не помогло

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

Покажите как выглядят крякозябы.

Вы обращались к разработчику?

Почему на сайте кирилица отображается нормально, а в БД крякозябы.
Кодировка соединения с MySQL у вас latin1; данные со страницы сайта идут в cp1251 и ложатсся в БД как latin1, поэтому в БД вы видите крякозябы (на месте кирилицы в latin1 стоят символы с умляутами и др.). При выборке кодировка соединения остается прежней - latin1 (кодировка таблиц не имеет значения) - но вывод происходит на странице с кодировкой cp1251, поэтому кирилица оказывается читаемой, хотя в БД крякозябы.

Еще раз говорю - необходимо чтобы скрипт устанавливал кодировку соединения с MySQL в cp1251.

112

Re: Содержимое таблиц отображается кракозяброй.

Уважаемый Hanut, поймите меня правильно! Я выполнил ваши указания и сайт отображает русский язык … Но понимаете, появилась другая проблема. Теперь когда я пытаюсь зайти в админку там, страница полностью выводят крякозябы. Такого раньше не было, как вы думаете в чём может быть проблема? Движок установил правильно и до этого момента админка работал на русском, но сейчас не работает… Я уверен, что это из за базы данных…

113

Re: Содержимое таблиц отображается кракозяброй.

amba004
Что именно вы делали?
При просмотре в phpMyAdmin как кирилица выглядит?

amba004 сказал:

Теперь когда я пытаюсь зайти в админку там, страница полностью выводят крякозябы. Такого раньше не было, как вы думаете в чём может быть проблема?

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

114

Re: Содержимое таблиц отображается кракозяброй.

Л?????xн\{oџVЦ?[ъЈ Z;]K?дЎОeЋЛіЙџм6Эо$(X, JҐ-6і®%);Ю`ц?µўf?Шґ3ї_АqЌXС%ZТ' вот такой вот тест появляется когда я захожу в админку. Может это поможет разобраться? Странно, но при просмотре в phpmyadmin кирилица отображается нормально...

115

Re: Содержимое таблиц отображается кракозяброй.

amba004
Страница админки в utf8? Нажмите в браузере правой кнопкой и посмотрите кодировку страницы; попробуйте ее поменять.

116

Re: Содержимое таблиц отображается кракозяброй.

Здраствуйте!
Начну по порядку...
Виндовс сервер 2003, майскл 5.1.23 апач 2.2.26

Вывод SHOW VARIABLES LIKE 'character%':
character_set_client    utf8
character_set_connection    utf8
character_set_database    cp1251
character_set_filesystem    binary
character_set_results    utf8
character_set_server    cp1251
character_set_system    utf8

Кусок бэкапа ( с помощью чего он делался не известно):
-- MySQL dump 10.11
--
-- Host: localhost    Database: phpbb
-- ------------------------------------------------------
--
-- Table structure for table `phpbb_attach_quota`
--

DROP TABLE IF EXISTS `phpbb_attach_quota`;
CREATE TABLE `phpbb_attach_quota` (
  `user_id` mediumint(8) unsigned NOT NULL default '0',
  `group_id` mediumint(8) unsigned NOT NULL default '0',
  `quota_type` smallint(2) NOT NULL default '0',
  `quota_limit_id` mediumint(8) unsigned NOT NULL default '0',
  KEY `quota_type` (`quota_type`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Воскресил при помощи phpMyAdmin - 2.11.5.1, при импорте указал кодировку cp1251
содержания поля posts_text:
"Да идея хорошая, вот только как отнесется администрация к этой просьбе. Да и так уже потихоньку оживает форум"

Далее при конвертировании в phpBB3, текст и все поля превращаются в UTF-8
После конвертирования на форуме и в новом поле posts_text появляется такие кракозябры:

"Калькуляторы постим суда - Купля-Продажа > Калькулятор кредита"

При конвертировании ошибок нету, бд где хранится новый формат "Сравнение utf8_bin"

На форуме тех. подержки перепробывали массы вариантов, безрезультатно.  Хостер локальный, тоисть я.

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

117

Re: Содержимое таблиц отображается кракозяброй.

alex7 сказал:

Воскресил при помощи phpMyAdmin - 2.11.5.1, при импорте указал кодировку cp1251
содержания поля posts_text:
"Да идея хорошая, вот только как отнесется администрация к этой просьбе. Да и так уже потихоньку оживает форум"

То есть, после импорта дампа, в phpMyAdmin вы видите кирилицу и таблицы находятся в cp1251?

Покажите значения запроса на вывод глобальных переменных (без слова GLOBAL выводятся сессионные значения переменных).
SHOW GLOBAL VARIABLES LIKE 'char%';

Если данные теперь у вас будут в utf8, то сравнение БД и таблиц должно быть utf8_general_ci.
Как я вижу данные из cp1251 в utf8 перекодировались, но возможно лежат в таблицах с кодировкой cp1251. Уточните этот момент.
Второй возможный вариант - это если глобальная настройка кодировки соединения (character_set_connection) установлена в cp1251; в таком случае тоже вероятно появление подобных крякозябов. В этом случае конфигурация скрипта перекодирования, или основной конфигурационный файл должен содержать переменную настройки кодировки соединения с MySQL, которую следует установить в utf8.

118

Re: Содержимое таблиц отображается кракозяброй.

вы видите кирилицу и таблицы находятся в cp1251?
Да. без проблем, отлично вижу.

SHOW GLOBAL VARIABLES LIKE 'char%';
character_set_client    cp1251
character_set_connection    cp1251
character_set_database    cp1251
character_set_filesystem    binary
character_set_results    cp1251
character_set_server    cp1251
character_set_system    utf8

Как я вижу данные из cp1251 в utf8 перекодировались, но возможно лежат в таблицах с кодировкой cp1251. Уточните этот момент.
Как?

Второй возможный вариант - это если глобальная настройка кодировки соединения (character_set_connection) установлена в cp1251;
[mysql]

default-character-set=cp1251

следует установить в utf8.
Поставил. не помогло.

Мне говорили что rоot не распознаёт кодировки, что нужно под каким то другим пользователем зайти только не под рутом. Попробывал.. анологично все.
Может у меня настроены не верно привелегии?
Вот мои настройки прав:
Пользователь users
Глобальные привилегии: USAGE я ничего не выбрал вообще в глбальных привелегиях
GRANT: Нет даже не знаю что это (обьясните)

Далее..
Привилегии уровня базы данных forum
Привилегии: ALL PRIVILEGES выбрал все, кроме GRANT, не знаю что это..
GRANT: Нет
Привилегии уровня таблицы: Нет

Сообщение добавлено Fri Aug  8 21:08:15 2008
Сообщение добавлено Fri Aug  8 21:07:35 2008
Говорят что имено надо настроить права эти и тогда увижу... но как настроить... всем некогда рассказать sad

119

Re: Содержимое таблиц отображается кракозяброй.

alex7 сказал:

default-character-set=cp1251

Данная директива отвечает за изначальную кодировку создаваемых БД и таблиц, в случае, когда эта кодировка не указана. Можете установить здесь utf8, если предполагается использовать только эту кодировку.

Безусловно, под root скрипты запускать нельзя. Создайте отдельного пользователя и задайте ему только необходимые права, для начала задайте все, кроме GRANT. GRANT - это привилегия на возможность задания/изменения привилегий других участников. Как правило, ею должен обладать только root.

Попробуйте повторить процесс перекодировки данных форума установив в конфигурационном файле MySQL (my.ini) следующую директиву:
Раздел [mysqld]

init-connect="SET NAMES utf8"

Это установит кодировку соединения с MySQL в utf8 (аналогично тому что я выше описывал, как поиск директивы отвечающей за данную функцию в конфигурационном файле форума, раз уж вы ее так и не нашли). Но обратите внимание, что теперь все скрипты будут работать с MySQL с кодировкой соединения utf8.

120

Re: Содержимое таблиц отображается кракозяброй.

помогите пожайлуста разобратся, все что здесь описано пробывал но не помогло, а именно в phpmyadmin отобращается все нормально, а вот в админке "????????????" 

вот результат запроса SHOW GLOBAL VARIABLES LIKE 'char%'  проблемной базы

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/

вот результат запроса SHOW GLOBAL VARIABLES LIKE 'char%'  localhost

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/

правил файл /etc/my.cnf.old нечего не помогло

другого файла не нашёл, или не там искал sad

Версия сервера: 5.0.67-community
Версия MySQL-клиента: 5.0.67
Версия php: 5.2.6
phpMyAdmin - 2.11.9.2

буду очень признателен за помощь

121

Re: Содержимое таблиц отображается кракозяброй.

denk
Надо найти my.cnf.
В phpMyAdmin перейдите на страницу переменных и посмотрите куда указывает basedir, возможно там конфигурационный файл. Хотя обычно он именно в /etc/. Если не найдете, обратитесь за помощью к хостеру.

122

Re: Содержимое таблиц отображается кракозяброй.

хм ..
странно, basedir стоит просто  /

123

Re: Содержимое таблиц отображается кракозяброй.

denk
Действительно странно. Возможно вы в песочнице chroot, в этом случае mysql будет установлен глобально для всего сервера и доступа к конфигурационному файлу может и не быть. Все-же обратитесь к хостеру. Если совсем ничего не поможет, то последний вариант - это править код скрипта, прописав в него строку с запросом на установку кодировки соединения с MySQL.

124

Re: Содержимое таблиц отображается кракозяброй.

ок, пока спасибо за помощь, результат отпишу

125

Re: Содержимое таблиц отображается кракозяброй.

Добрый день! У меня в базе кирилица отображается кракозяброй, на йте отображается нормально, но буквы "И" и "ш" отображаются квадратиками.
Как сделать коректный дамп этой базы?
http://maxsite.org/forum/viewtopic.php?pid=813#p813 - тут сказано, что "пока не поменяешь глобальную переменную в настройках MySQL сервера default-character-set = cp1251 на default-character-set = utf8 счастья с сабжевыми буквами нет." Как это можно сделать?
Настройки базы
SHOW GLOBAL VARIABLES LIKE 'char%'
character_set_client    cp1251
character_set_connection    cp1251
character_set_database    cp1251
character_set_filesystem    binary
character_set_results    cp1251
character_set_server    cp1251
character_set_system    utf8
Настройки сервера
character set client    utf8
(Global value)    cp1251
character set connection    utf8
(Global value)    cp1251
character set database    cp1251
character set filesystem    binary
character set results    utf8
(Global value)    cp1251
character set server    cp1251
character set system    utf8

Сайт находится на хостинге.