Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2007-08-29 18:22:05

ARMICRON
Гость

Переход с utf8 на cp1251.

В данный момент у меня punbb russian-utf, база данных тоже в utf-8. Требуется перенести форум на сервер с базой данных в кодировке cp1251. Как это можно сделать?

#2 2007-08-29 20:54:42

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

ARMICRON пишет:

на сервер с базой данных в кодировке cp1251

можно сделать чтобы на "базе с кодировкой cp1251" были таблицы с кодировкой utf8 smile для этого можно в install.php в конце каждого "create table" добавить "default charset=utf8"

пример:

        case 'mysql':
        case 'mysqli':
            $sql = 'CREATE TABLE '.$db_prefix."bans (
                    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
                    username VARCHAR(200),
                    ip VARCHAR(255),
                    email VARCHAR(50),
                    message VARCHAR(255),
                    expire INT(10) UNSIGNED,
                    PRIMARY KEY (id)
                    ) TYPE=MyISAM DEFAULT CHARSET=utf8;";

update: таблицу search_words не надо делать с default charset или указать "default charset=binary" !

#3 2007-08-30 10:31:57

BrokenBrake
Гость

Re: Переход с utf8 на cp1251.

Зачем?!

#4 2007-08-30 21:45:31

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

речь о том, что на некоторых серверах mysql кодировка символов по-умолчанию отличается от utf-8
где-то после install.php я получил таблицы со шведским (!!!) чарсетом и коллейшном smile

у большинства русских провайдеров, как я понял, по дефолту таблицы получают cp1251. опытный адмни может изменить эти дефолты для mysql, но большинство людей о таких вещах даже не слышало.
поставят форум наперекосяк, а потом рапортуют, дескать utf - гомно, дайте виндовую кодировку smile

#5 2007-08-30 21:47:04

BrokenBrake
Гость

Re: Переход с utf8 на cp1251.

Грустно, блин. И так Рунет на уровне прошлого века тащится, в основном, и еще и поддерживают это.

#6 2007-09-10 21:35:36

niikto
Гость

Re: Переход с utf8 на cp1251.

artoodetoo пишет:

некоторых серверах mysql кодировка символов по-умолчанию отличается от utf-8

у меня какраз так по умолчанию. даже денвер я так настроил  - чтобы не расслабляться - чтоб на хостера похоже было 1:1  smile
ниче - работает - строк утока set names пользую utf8 и ок ))

#7 2007-11-12 00:11:48

bindstream
Гость

Re: Переход с utf8 на cp1251.

Прочитал и ужаснулся!!! Действительно, все по кривому от кривых рук. Прошу помощи...

1. "таблицы со шведским (!!!) чарсетом и коллейшном" - так и есть. Расскажите пожалуйста как это исправить и сделать по уму не потеряв информации из БД.

2. Соответственно есть wordpress на utf-8 и туда бы хотелось добавить последние темы форума, но он в кривой кодировке и ничего не получается... как сделать "интеграцию"...

Как я понимаю пробему - конвертация форума в utf-8. Как это сделать безболезненно - не знаю.

#8 2007-11-12 07:24:22

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

можно сделать бекап базы, затем отредактировать create table с явным указанием default charset utf8, восстановить из бекапа.
бекапировать удобнее отдельно структуру, отдельно данные.

#9 2007-11-12 08:41:20

bindstream
Гость

Re: Переход с utf8 на cp1251.

1. create table допустим отредактирую, так ведь и сами данные надо в utf-8 перекодировать без потери структуры содержимого... как это сделать?

2. В данный момент при экспорте это выглядет так:

CREATE TABLE `bans` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(200) collate latin1_german2_ci default NULL,
  `ip` varchar(255) collate latin1_german2_ci default NULL,
  `email` varchar(50) collate latin1_german2_ci default NULL,
  `message` varchar(255) collate latin1_german2_ci default NULL,
  `expire` int(10) unsigned default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ;

можно ли просто согласно шаблону в ответе #2 удалить лишнее?

3. На хосте phpAdmin не позволяет импортировать (? - столкнулся впервые сейчас), но можно экспортировать. Можно ли посредством php-скрипта с хостинга импортировать данные в БД? Я не профи, поэтому приветствуются готовые решения.

Заранее СпасиБо!

Редактировался bindstream (2007-11-12 09:44:34)

#10 2007-11-12 11:21:10

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

1. не факт, что надо что-то перекодировать. сначала проверь в какой кодировке данные файле бекапа. при загрузке надо указать ту же кодировку, что есть в бекапе
2. надо удалить лишнее. вобщем как в сообщении #2
3. чтобы импортировать надо просто вызвать команду "SQL" и "выполнить" то что есть в бекапе

#11 2007-11-14 03:52:00

torg
Гость

Re: Переход с utf8 на cp1251.

1251 лучше. Советую, проблем меньше и скорость выше.

#12 2007-11-14 04:20:50

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

на вкус и цвет товарищей нет. сейчас еще можно рассуждать что лучше, но через год-другой везде поголовно будет UTF-8 smile imho, если твой проект только начинает развиваться, бери за основу перспективные решения. чтобы не было "мучительно больно" потом.
это то же самое, что сравнивать табличную верстку и CSS.

#13 2007-11-14 04:52:27

hcs
Гость

Re: Переход с utf8 на cp1251.

torg пишет:

1251 лучше. Советую, проблем меньше и скорость выше.

UTF лучше. Советую, проблем меньше и скорость выше smile

#14 2007-11-17 22:09:40

ARMICRON
Гость

Re: Переход с utf8 на cp1251.

Проблема решилась.
Поясню ситуацию, может кому интересно будет. Я держал форум в локалке (ОС Linux), нужно было перенести форум на другой компьютер с Windows(тут почему-то появились проблемы с юникодом и возникла необходимость конвертирования базы в cp1251).
В общем легче оказалось на этот комп поставить Linux smile

#15 2007-11-17 23:06:10

artoodetoo
Гость

Re: Переход с utf8 на cp1251.

ARMICRON пишет:

нужно было перенести форум на другой компьютер с Windows(тут почему-то появились проблемы с юникодом и возникла необходимость конвертирования базы в cp1251).

ужос! я не знал, что под windows уникод невозможен, а то бы тоже на линукс перебрался. работаю спокойно под XP+Apache и ни о чем не догадываюсь wink

#16 2007-11-18 17:31:25

ARMICRON
Гость

Re: Переход с utf8 на cp1251.

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

Делал стандартно: mysqldump database > dat.sql
потом mysql database < dat.sql

#17 2007-11-19 11:12:30

bindstream
Гость

Re: Переход с utf8 на cp1251.

У меня также ситуация не решилась. Бекап базы форума на локальном компьютере верно не отображается ни при одной кодировке. Если же чере phpMyAdmin делать тупо ввод данных в поля в utf-8 - отображается нормально только в самом phpMyAdmin. На форуме же - знаки вопроса, даже при отредактированном дистрибутиве под utf-8 и ленгпаке.

Кто что подскажет?

#18 2008-08-07 18:39:42

gin
Гость

Re: Переход с utf8 на cp1251.

дамп мускуля можно в консольке сконвертить при помощи iconv, в любую сторону

#19 2008-10-24 18:32:29

artzormchak
Гость

Re: Переход с utf8 на cp1251.

Теже грабли, - переношу форум на новый хост, слил базу, перенес файло, залил базу - все в вопросиках sad

#20 2008-10-24 19:29:53

hcs
Гость

Re: Переход с utf8 на cp1251.

Сливаешь базу, при этом указываешь кодировку.
ткрываешь редактором в кодировке указанной при сливе. Проверяешь у инструкций CREATE TABLE какая кодировка в DEFAULT, эта инструкция может быть отнесена как к отдельным полям в таблице так и ко всей таблице, проверь. Исправляй кодировку на нужную тебе, например вместо DEFAULT CHARSET ISO1204 должнро быть DEFAULT CHARSET win1251 или utf8, при этом убедись что данные редактор отображает как надо, бьез кракозябров. Сохраняй файл в нужной тебе кодировке. Создай БД  c default charset --твоя кодировка, выполняй дамп.

#21 2008-10-24 20:50:04

artzormchak
Гость

Re: Переход с utf8 на cp1251.

hcs пишет:

Сливаешь базу, при этом указываешь кодировку.

К сожалению, ненашел где при импорте через phpMyadmin указать кодировку, но база utf8

hcs пишет:

ткрываешь редактором в кодировке указанной при сливе.

Открываю, все ОК. В редакторе галка - utf8.

hcs пишет:

Проверяешь у инструкций CREATE TABLE какая кодировка в DEFAULT, эта инструкция может быть отнесена как к отдельным полям в таблице так и ко всей таблице, проверь.

CREATE TABLE `lug_attachments` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `poster_id` int(10) unsigned NOT NULL default '0',
  `topic_id` int(10) unsigned NOT NULL default '0',
  `post_id` int(10) unsigned NOT NULL default '0',
  `uploaded` int(10) unsigned NOT NULL default '0',
  `filename` varchar(255) NOT NULL default 'error.file',
  `mime` varchar(64) NOT NULL default '',
  `location` text,
  `size` int(10) unsigned NOT NULL default '0',
  `image_dim` varchar(64) NOT NULL default '',
  `downloads` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

hcs пишет:

Исправляй кодировку на нужную тебе, например вместо DEFAULT CHARSET ISO1204 должнро быть DEFAULT CHARSET win1251 или utf8, при этом убедись что данные редактор отображает как надо, бьез кракозябров.

Изменил (было пару таблиц с ср1251, правда не столь важных), причем все нормально, ни кракозябров, ничего.

hcs пишет:

Сохраняй файл в нужной тебе кодировке. Создай БД  c default charset --твоя кодировка, выполняй дамп.

Все сделал.

В итоге теже грабли sad((

Проверяю через phpMyAdmin свежезалитый дамп у всех таблиц utf8_general_ci

Редактировался artzormchak (2008-10-24 20:51:54)

#22 2008-10-24 22:04:08

coordinator
Гость

Re: Переход с utf8 на cp1251.

artzormchak пишет:

К сожалению, ненашел где при импорте через phpMyadmin указать кодировку, но база utf8

При экспорте не указать, нужно это сделать до экспорта. Во вкладке операции выбрать необходимую кодировку для поля "Сравнения". После этого осуществлять экспорт.

#23 2008-10-25 07:25:09

artzormchak
Гость

Re: Переход с utf8 на cp1251.

непомогло ...

#24 2008-10-25 07:29:54

hcs
Гость

Re: Переход с utf8 на cp1251.

Нужно убедиться, что у тебя в конфиге стоит MySQL Standart, а у тебя очень похоже, что Improved.
Для MySQL Standart специально подправлен /include/dblayer/mysql.php , в него добавлен

 @mysql_query("SET NAMES 'utf8'");

#25 2008-10-25 07:37:27

artzormchak
Гость

Re: Переход с utf8 на cp1251.

{
            @mysql_query("SET NAMES 'utf8'");
            //@mysql_query("SET NAMES 'cp1251'");
            if (@mysql_select_db($db_name, $this->link_id))
                return $this->link_id;


вот кусочек, я  так понимаю все ОК ...

Редактировался artzormchak (2008-10-25 07:54:18)

Подвал доски

Под управлением FluxBB. Хостинг Hostens