1. Переводим все файлы папки upload в кодировку UTF-8
Вопрос КАК? Уверена, что производить руками все данные манипуляции крайне не хочется. Для этих целей я использовала python скрипт найденный мною тут. В той же теме есть описание использование iconv с ком. интерпретатором bash для win32 - вариант в исходном виде не рабочий, но при небольшом видо изменении может быть использован. Еще раз повторю, что я использовала python скрипт, который конвертирует файлы только в указанной директории. Это конечно несколько не удобно (приходится неоднократно заниматься копированием), с другой стороны ознакомиться с файловой структурой не помешает. Скорее всего, когда решу текущую задачу доведу его до ума.
2. изменяем следующие файлы:
...\ips_kernel\class_db_mysql_client.php
...\ips_kernel\class_db_mysqli_client.php
возникает вопрос: а в чем разница данных файлов? опытном путем выяснила, что на localhost'е используется второй. Выбор файлов производится в зависимости от условия:
if ( extension_loaded('mysqli') AND ! defined( 'FORCE_MYSQL_ONLY' ) )
показывает, что это значение задается при установке на 4ом шаге (База данных) - Кодировка MySQL. Но, если оставить данные файлы без изменений, после установки отображается Классический стиль IPB (синий) без рисунков, а не IP.Board Pro.
Заглянув в исходное руководство (см ссылку выше) мы видим:
По идее это достаточно сделать только в \ips_kernel\ class_db_mysql.php (очевидно речь идет о более старой версии)
Но для перестраховки я прописал данные указания в нескольких файлах, где идет соединение с БД ($this->DB->connect())
\sources\ipsclass.php
ipchat.php (если кто использует)
и т.д.
Собственно хотелось бы узнать, достаточно ли выше описанных изменений?
3. в корневой каталог, где располагаются файлы форума, добавляем файл .htaccess, содержащий:
AddDefaultCharset UTF-8
а так же любые другие директивы, которые вам требуются.
4. начинаем установку. На 4ом шаге вместо cp1251, указываем utf8.
5. смотрим на установленный форум. В моем случае все отображалось корректно, за исключением столбца Последнее сообщение, в котором в строке "Добро пожаловать!" вместо "!" был черный ромб с вопросом. Не паникуем. Заходим в панель управления (не обращая внимания на кодировку): Настройки -> Общие настройки -> Кодировка документов. Меняем значение windows-1251 на utf-8. После этого символ в виде черного ромба с вопросом исчез, проблем с кодировкой нет.
Хочу уточнить: в данной теме, а так же по данному адресу для версии 2.0.x, 2.1.х советуют вручную изменять значения charset в теге meta. В версии 2.3.4 насколько я понимаю используется подстановка данного значения, которое задается в общих настройках. Правильно понимаю?
Радости моей не было предела! Убив на это 3 дня больничного результат был, достигнут. Рано я радовалась. Дальше описание моей проблемы.
Собственно следующей моей задачей является конвертация базы MySQL из cp1251 в utf8. Вот ЭТО я пока не смогла сделать. История следующая: срочно потребовался форум, знакомый посоветовал использовать ipb сразу направив на ibresource.ru. Вопрос не в деньгах, просто перед тем как приобретать что то, хотелось познакомиться с продуктом полностью. Продукт понравился (за исключением вопроса с кодировкой), накопилась некоторая бд (не особо большая, и в принципе убив 2-3 дня ее можно перетащить в ручную, перекопировав все посты, но это очень не хочется делать!!!). Сейчас форума в сети нету. Решив данную задачу, сразу куплю лицензию и подниму форум. Так что большая просьба не ругаться за использование null версии.
И так что я делаю:
Имею дамп снятый с бд в кодировке cp1251.
1. Конвертирую файл в utf8.
2. Добавляю в начало следующие строки
SET NAMES utf8;
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `db_name`;
3. по всему файлу произвожу замену
DEFAULT CHARSET=cp1251
на
DEFAULT CHARSET=utf8
4. В phpMyAdmin удаляю все таблицы в бд db_name
5. Восстанавливаю бд из конвертированного дампа:
mysql -u u_name -p db_name < C:\1.sql
пробывала и так:
mysql -u u_name -p --default-character-set=utf8 db_name < C:\1.sql
... и в итоге... Вижу:
в течении уже 2х дней вижу, сил нету... Что только не пробовала... Хочется взять монитор и стукнуть его головой
В БД все сравнения utf8_general_ci. Данные нормальные. Используя данный дамп без проблем восстанавливаю базу в кодировке cp1251. Помогите пожалуйста! У меня 2 предположения, либо я не делаю, какую-то мелочь, либо совершенно не правильно делаю все, в этом случае опишите пожалуйста алгоритм. Заранее спасибо за помощь!
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
Serenity
Предупреждение: НЕ терпеливым не стоит даже пытаться!
И так, перечитав большую часть постов на данном форуме, а так же на западном, поковырявшись в google я нашла способ на ipbskins.ru
Описанный ниже способ является описанием точных действий для выше указанной версии.
Исходное руководство которым я пользовалась доступно тут.
Огромное спасибо Kuja и Dr.Freddy.
Действия:
0. настраиваем mysql
В файле: my.cnf указываем:
1. Переводим все файлы папки upload в кодировку UTF-8
Вопрос КАК? Уверена, что производить руками все данные манипуляции крайне не хочется. Для этих целей я использовала python скрипт найденный мною тут. В той же теме есть описание использование iconv с ком. интерпретатором bash для win32 - вариант в исходном виде не рабочий, но при небольшом видо изменении может быть использован. Еще раз повторю, что я использовала python скрипт, который конвертирует файлы только в указанной директории. Это конечно несколько не удобно (приходится неоднократно заниматься копированием), с другой стороны ознакомиться с файловой структурой не помешает. Скорее всего, когда решу текущую задачу доведу его до ума.
2. изменяем следующие файлы:
...\ips_kernel\class_db_mysql_client.php
...\ips_kernel\class_db_mysqli_client.php
возникает вопрос: а в чем разница данных файлов? опытном путем выяснила, что на localhost'е используется второй. Выбор файлов производится в зависимости от условия:
но его смысл мне не понятен.
в class_db_mysql_client.php 162 строка
вместо:
ставим:
ниже, вместо:
ставим:
в class_db_mysqli_client.php 169 строка
вместо:
ставим:
ниже, вместо:
ставим:
на этом изменение файлов завершено.
Что меня смущает
показывает, что это значение задается при установке на 4ом шаге (База данных) - Кодировка MySQL. Но, если оставить данные файлы без изменений, после установки отображается Классический стиль IPB (синий) без рисунков, а не IP.Board Pro.
Заглянув в исходное руководство (см ссылку выше) мы видим:
Собственно хотелось бы узнать, достаточно ли выше описанных изменений?
3. в корневой каталог, где располагаются файлы форума, добавляем файл .htaccess, содержащий:
AddDefaultCharset UTF-8
а так же любые другие директивы, которые вам требуются.
4. начинаем установку. На 4ом шаге вместо cp1251, указываем utf8.
5. смотрим на установленный форум. В моем случае все отображалось корректно, за исключением столбца Последнее сообщение, в котором в строке "Добро пожаловать!" вместо "!" был черный ромб с вопросом. Не паникуем. Заходим в панель управления (не обращая внимания на кодировку): Настройки -> Общие настройки -> Кодировка документов. Меняем значение windows-1251 на utf-8. После этого символ в виде черного ромба с вопросом исчез, проблем с кодировкой нет.
Хочу уточнить: в данной теме, а так же по данному адресу для версии 2.0.x, 2.1.х советуют вручную изменять значения charset в теге meta. В версии 2.3.4 насколько я понимаю используется подстановка данного значения, которое задается в общих настройках. Правильно понимаю?
Радости моей не было предела! Убив на это 3 дня больничного результат был, достигнут. Рано я радовалась. Дальше описание моей проблемы.
Собственно следующей моей задачей является конвертация базы MySQL из cp1251 в utf8. Вот ЭТО я пока не смогла сделать. История следующая: срочно потребовался форум, знакомый посоветовал использовать ipb сразу направив на ibresource.ru. Вопрос не в деньгах, просто перед тем как приобретать что то, хотелось познакомиться с продуктом полностью. Продукт понравился (за исключением вопроса с кодировкой), накопилась некоторая бд (не особо большая, и в принципе убив 2-3 дня ее можно перетащить в ручную, перекопировав все посты, но это очень не хочется делать!!!). Сейчас форума в сети нету. Решив данную задачу, сразу куплю лицензию и подниму форум. Так что большая просьба не ругаться за использование null версии.
И так что я делаю:
Имею дамп снятый с бд в кодировке cp1251.
1. Конвертирую файл в utf8.
2. Добавляю в начало следующие строки
3. по всему файлу произвожу замену
DEFAULT CHARSET=cp1251
на
DEFAULT CHARSET=utf8
4. В phpMyAdmin удаляю все таблицы в бд db_name
5. Восстанавливаю бд из конвертированного дампа:
mysql -u u_name -p db_name < C:\1.sql
пробывала и так:
mysql -u u_name -p --default-character-set=utf8 db_name < C:\1.sql
... и в итоге... Вижу:
в течении уже 2х дней вижу, сил нету... Что только не пробовала... Хочется взять монитор и стукнуть его головой
В БД все сравнения utf8_general_ci. Данные нормальные. Используя данный дамп без проблем восстанавливаю базу в кодировке cp1251. Помогите пожалуйста! У меня 2 предположения, либо я не делаю, какую-то мелочь, либо совершенно не правильно делаю все, в этом случае опишите пожалуйста алгоритм. Заранее спасибо за помощь!
Ссылка на комментарий
Поделиться на других сайтах
18 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.