Проблема с русскими "И" и "ш"

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

ilia3d

Проблема с русскими "И" и "ш"

Post by ilia3d »

"И" и "ш" сидели на трубе...

Вообщем после конвертации из 1251 в  UTF-8, вылезли проблемы с сабжевыми буквами. Конвертировал при помощи
Character Encoding Converter 1.1.0. Вообщем-то косяки с буквами было уже видно сразу непосредственно после конвертации, но я с чего-то вдруг решил что оно само чудодейственно заработает, как только попадет в mySQL базу. Как бы не так...

Три других конвертилки не особенно помогли, были или теже грабли или вообще что-то не то. Поиск по гуглу дал ссылки на страницы, где подобные проблемы решались то на перле то на mySQL и все через одно и тоже место. А мне собственно только замены сделать (кракозябра1 -> "И" и кракозябра2 -> "ш") и перезалить.
С заменой "ш" notepad++  справился, а вот с "И" я просто задолбался. Там какие-то управляющие символы, они просто не копируются в буфер.

Чем конвертировать чтобы не возникало проблем с буквами "И" и "ш"?
Спасибо )
Last edited by ilia3d on Sat May 23, 2009 11:56 am, edited 1 time in total.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Проблема с русскими "И" и "ш"

Post by ZYV »

Я вообще не понимаю чего вы делаете - перлы какие-то, мерлы, нотепады, левачину какую-то всякую тянут...

Есть iconv, вызывается как iconv -f cp1251 -t utf8 file.ext > newfile.ext . Как вообще могут быть какие-то проблемы с какими-то буквами?
unsigned double ZYV;
ilia3d

Re: Проблема с русскими "И" и "ш"

Post by ilia3d »

ZYV wrote: Я вообще не понимаю чего вы делаете - перлы какие-то, мерлы, нотепады, левачину какую-то всякую тянут...

Есть iconv, вызывается как iconv -f cp1251 -t utf8 file.ext > newfile.ext . Как вообще могут быть какие-то проблемы с какими-то буквами?
С буквами пожалуй что никаких, теперь только одна проблема - найти этот  iconv под win32...

Кстати, нашел этот конвертер в веб-оболочке http://www.iconv.org/
мне оно присылает пустые файлы, но может у кого-то заработает )
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Проблема с русскими "И" и "ш"

Post by ZYV »

И в чем проблема? Снеси этот глюкодром и поставь нормальную систему с менеджером пакетов, чтобы ставить новые программы было можно набрав sudo aptitude install iconv и нажав Enter.

P.S. Варианта целых два:

1) http://gnuwin32.sourceforge.net/
2) Cygwin

Первый предпочтительнее.

А вообще кинь мне базу, интересно.
unsigned double ZYV;
Sonya

Re: Проблема с русскими "И" и "ш"

Post by Sonya »

Конвертировал при помощи Character Encoding Converter 1.1.0
Специально посмотрела, что за вещь. Написано: "Character Encoding Converter is an easy-to-use application that, as its name says, will convert character encodings of files." То есть касается только кодировки файлов, но никак не букв в них записаных. Кракозябра была и кракозяброй останется, с той только разницей, что пишется она теперь в двухбайтовой кодировке.
ZYV wrote: Есть iconv, вызывается как iconv -f cp1251 -t utf8 file.ext > newfile.ext . Как вообще могут быть какие-то проблемы с какими-то буквами?
Та же самая история по моему понятию, если в самом дампе уже такой вот салат
wohingegen der Werkstoff Stahl gewГ¶hnlich nicht als Eisen bezeichnet wird
то что даст перекодировка файла? Кракозябры нужно менять в дампе независимо от кодировки файла (или как дополнение к нему) или я ничего не понимаю  ::)
Last edited by Sonya on Sun May 24, 2009 10:45 am, edited 1 time in total.
ilia3d

Re: Проблема с русскими "И" и "ш"

Post by ilia3d »

Sonya wrote:
Специально посмотрела, что за вещь. Написано: "Character Encoding Converter is an easy-to-use application that, as its name says, will convert character encodings of files." То есть касается только кодировки файлов, но никак не букв в них записаных. Кракозябра была и кракозяброй останется, с той только разницей, что пишется она теперь в двухбайтовой кодировке.
нет, она действительно перекодирует содержимое, но возникают вышеозначенные проблемы... В принципе я это кривинько, но решил, сделав последнюю замену через  jEdit. Базу залил, все вроде работает но... "осадок остался" )

Если честно, я до конца сам не понимаю что это было. База отображалась в phpMyadmin в кракозябрах (русский текст), однако скрипт выводил все совершенно нормально (collation=1251_general_ci). После того как я это безобразие переконвертировал  UTF8 -> Win1251 (!) русский текст стал совершенно нормально отображаться в  UTF-8 кодировке как в текстовом редакторе, так и в  phpMyAdmin. Кроме букв "И" и "ш". Небольшой кусочек исходной базы с "кракозябрами", в аттачменте.
то что даст перекодировка файла? Кракозябры нужно менять в дампе независимо от кодировки файла (или как дополнение к нему) или я ничего не понимаю
под кодировкой файла я и разумею кодировку всех его символов.
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

ilia3d

Re: Проблема с русскими "И" и "ш"

Post by ilia3d »

ZYV wrote: И в чем проблема? Снеси этот глюкодром и поставь нормальную систему с менеджером пакетов, чтобы ставить новые программы было можно набрав sudo aptitude install iconv и нажав Enter.

P.S. Варианта целых два:

1) http://gnuwin32.sourceforge.net/
2) Cygwin

Первый предпочтительнее.
1), 2) - возьму на заметку  :)
А вообще кинь мне базу, интересно.
фрагмента из предыдущего поста хватит? )
Sonya

Re: Проблема с русскими "И" и "ш"

Post by Sonya »

ilia3d wrote: нет, она действительно перекодирует содержимое,
То есть, если у меня в дампе стоит кракозябры ЕЎ, ДЇ, Д™, „, “ , ДЌ и так далее, то он мне эти кракозябры перекодирует. Вопрос: во что перекодирует? Откуда он знает, какие буквы скрываются под каждой отдельной кракозяброй?
ilia3d

Re: Проблема с русскими "И" и "ш"

Post by ilia3d »

Sonya wrote:
ilia3d wrote: нет, она действительно перекодирует содержимое,
То есть, если у меня в дампе стоит кракозябры ЕЎ, ДЇ, Д™, „, “ , ДЌ и так далее, то он мне эти кракозябры перекодирует. Вопрос: во что перекодирует? Откуда он знает, какие буквы скрываются под каждой отдельной кракозяброй?
ну.., это указывается в настройках программы. Исходный файл - кодировка "А", конечный файл - кодировка "В".

для "угадывания" кодировок, использовал автоопределитель: http://2cyr.com/decode/?lang=ru
Sonya

Re: Проблема с русскими "И" и "ш"

Post by Sonya »

ilia3d wrote: ну.., это указывается в настройках программы.
Ушла грузить программу, пока сама не увижу - не поверю :)
ilia3d

Re: Проблема с русскими "И" и "ш"

Post by ilia3d »

Sonya wrote:
ilia3d wrote: ну.., это указывается в настройках программы.
Ушла грузить программу, пока сама не увижу - не поверю :)
Ну почему мне никто не верит, а?  :'(

Кстати, только сейчас заметил, прога использует iconv.dll  8)
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Проблема с русскими "И" и "ш"

Post by ZYV »

Эээ нет, друг мой, то, что ты прикрепил восстановлению (автоматическому) уже не подлежит. В двух словах, вся хитрость в том, как устроен UTF8. Вообще, конечно, надо читать доки по этой теме, я уже сейчас смутно помню - давно разбирался, поэтому могу наврать, но в принципе, там те символы, которые могут быть представлены в семибитной кодировке представляются в ней, а которые нет - через двухбайтные, причем, если я правильно помню, там есть один бит на то, чтобы показать, что следующие два символа надо интерпретировать как одно целое. Так вот, ты этот дамп сделал phpMyAdmin'ом, который уже попортил закодированные там данные - часть этих связей почему-то пропадает при экспорте через него.

А что делать, я уже писал в теме для лузеров - можно сделать дамп через mysqldump дубовым способом (указать принудительно ему, что интерпретировать эти строки надо как cp1251, и включить совместимость с mysql-321), либо если ssh нет, запустить мой скрипт, который на самом деле выдран из одной из первых версий phpmyadmin, который не сильно умничал и исправлен немного. Он может новые фишки в структуре не очень правильно передавать, но для данных вполне подходит.

После этого, если интерпретировать тупо дампанутые строки как utf8 всё должно завестись, потому, что тут уже ничего не потеряно. Как если бы ты на сайте utf8 кодировку в браузере переключил в cp1251 - такая же ситуация.

Скрипт я не хочу выкладывать в паблик по двум причинам - он плохо написан и не документирован, и я иногда им зарабатываю :) но может быть как появится возможность, если довести до ума и мануал написать - надо будет выложить. Могу тебе дать на пробу, только почты твоей нигде не вижу.

Я таким способом десятки зафаршмаченных клоунами баз восстановил.
unsigned double ZYV;
Leee
Forum Members
Forum Members
Posts: 22
Joined: Sun Jun 07, 2009 8:41 pm

Re: Проблема с русскими "И" и "ш"

Post by Leee »

ZYV
У меня сейчас такие же проблемы при переносе БД с хостинга на хостинг.
либо если ssh нет, запустить мой скрипт, который на самом деле выдран из одной из первых версий phpmyadmin, который не сильно умничал и исправлен немного
Я наверное выберу этот вариант. Скинь пож мне этот скрипт.
Моя почта phi_fpm@mail.ru

Либо придется тогда с mysqldump разбираться, чего не очень хочу, т.к. не люблю перл

Подскажите мне пож
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Проблема с русскими "И" и "ш"

Post by ZYV »

Причем тут Perl?

ilia3d мне так и не ответил чем закончилась его история. Если выложу, то выкладывать буду для всех. А сейчас нет времени.
unsigned double ZYV;
Leee
Forum Members
Forum Members
Posts: 22
Joined: Sun Jun 07, 2009 8:41 pm

Re: Проблема с русскими "И" и "ш"

Post by Leee »

mysqldump - это ведь перловый скрипт?
У меня такая же проблема, как и у автора.
При переносе базы с хостинга на хостинг теряются буквы "И", "ш" еще и "Р"
Причем при установке CMS наверное нужно было раскоментировать строку с "set name" в include.php
Но я этого не сделал, т.к. не знал. А сейчас уже нужно что-то делать с содержимым, которое хранится на реальном сайте.
Подскажите верный путь :)
Post Reply

Return to “Russian - русский”