Version: 20241125
By the same author: Virtour.fr — visites virtuelles
Универсальный декодер — конвертер кириллицы
Результат
[Результат перекодировки появится здесь...]
|
Гостевая книга
Поставьте ссылку на наш сайт! <a href=»https://2cyr.com/decode/»>Универсальный декодер кириллицы</a> |
Custom Work For a small fee I can help you quickly recode/recover large pieces of data — texts, databases, websites… or write custom functions you can use (invoice available). FAQ and contact information. |
О программе
Здравствуйте! Эта страница может пригодиться, если вам прислали текст (предположительно на кириллице), который отображается в виде странной комбинации загадочных символов. Программа попытается угадать кодировку, а если не получится, покажет примеры всех комбинаций кодировок, чтобы вы могли выбрать подходящую.
Использование
- Скопируйте текст в большое текстовое поле дешифратора. Несколько первых слов будут проанализированы, поэтому желательно, чтобы в них содержалась (закодированная) кириллица.
- Программа попытается декодировать текст и выведет результат в нижнее поле.
- В случае удачной перекодировки вы увидите текст в кириллице, который можно при необходимости скопировать и сохранить.
- В случае неудачной перекодировки (текст не в кириллице, состоящий из тех же или других нечитаемых символов) можно выбрать из нового выпадающего списка вариант в кириллице (если их несколько, выбирайте самый длинный). Нажав OK вы получите корректный перекодированный текст.
- Если текст перекодирован лишь частично, попробуйте выбрать другие варианты кириллицы из выпадающего списка.
Ограничения
- Если текст состоит из вопросительных знаков («???? ?? ??????»), то проблема скорее всего на стороне отправителя и восстановить текст не получится. Попросите отправителя послать текст заново, желательно в формате простого текстового файла или в документе LibreOffice Writer/MSOffice Word.
- Не любой текст может быть гарантированно декодирован, даже если вы уверены на 100%, что он написан в кириллице.
- Анализируемый и декодированный тексты ограничены размером в 100 Кб.
- Программа не всегда дает стопроцентную точность: при перекодировке из одной кодовой страницы в другую могут пропасть некоторые символы, такие как болгарские кавычки, реже отдельные буквы и т.п.
- Программа проверяет максимум 8280 вариантов из двух и трех перекодировок: если имело место многократное перекодирование вроде koi8(utf(cp1251(utf))), оно не будет распознано или проверено. Обычно возможные и отображаемые верные варианты находятся между 32 и 255.
- Если части текста закодированы в разных кодировках, программа сможет распознать только одну часть за раз.
Условия использования
Пожалуйста, обратите внимание на то, что данная бесплатная программа создана с надеждой, что она будет полезна, но без каких-либо явных или косвенных гарантий пригодности для любого практического использования. Вы можете пользоваться ей на свой страх и риск.
Если вы используете для перекодировки очень длинный текст, убедитесь, что имеется его резервная копия.
Переводчики
Русский (Russian) : chAlx; Пётр Васильев (http://yonyonson.livejournal.com/); Сергей.
Страница подготовки переводов на другие языки находится тут.
Что нового
October 2013 : I am trying different optimizations for the system which should make the decoder run faster and handle more text. If you notice any problem, please notify me ASAP.
На английской версии страницы доступен changelog программы.
Вернуться к кириллической виртуальной клавиатуре.
Всем привет. Столкнулся с вопросом конвертации базы из CP1251 в UTF8.
Полазив по просторам Интернета не нашел готового скрита (видимо плохо искал).
Вот решил написать свой скриптп. Конвертация происходит безо всяких дампов базы. Решены проблемы с символами е = ё и т.д.
Пользуйтесь на здоровье.
Исправьте в начале скрипта открывающий тег. Хабр его режет, пришлось заэкранировать вопросик 
UPD:
По просьбам трудящихся описываю алгоритм работы:
1. Переименовываем таблицу во временную.
2. Берем описание таблицы. В ней меняем defaul charset на utf8. Ставим collate utf8_bin(делается, чтобы буквы нормлаьно перекодировались. И не было проблем с е = ё и т.д. Но есть 1 трабла — при сравнении строковых значений будет учитываться регистр).
3. Отключаем использование ключей(увеличивается скорость вставки). ALTER TABLE table_in_utf8 DISABLE KEYS;
4. Вставляем данные из таблицы, которая у нас в cp1251 в таблицу с кодировкой utf8. INSERT INTO table_in_utf8 SELECT * FROM table_in_cp1251;
5. Включаем использование ключей ALTER TABLE table_in_utf8 ENABLE KEYS;
Ну а скриптег написан для того, чтобы не делать все это ручками, если в вашем проекте очень много таблиц.
запускать скрипт можно из консоли `php -f export.php` или через веб.
$time = microtime(true);
$db = ‘vspomni’;
$login = ‘vspomni’;
$passw = »;
$host = ‘vspomni.ru’;
$res = mysql_connect($host, $login, $passw);
mysql_select_db($db);
mysql_query(‘SET NAMES utf8;’);
$rs = mysql_query(‘SHOW TABLES;’);
print mysql_error(); //the notorious ‘command out of synch’ message 
while (($row=mysql_fetch_assoc($rs))!==false) {
$time1 = microtime(true);
//print $row[‘Tables_in_vspomni2’].»\n»;
$table_name = $row[‘Tables_in_’.$db];
$query = ‘SHOW CREATE TABLE ‘.$table_name;
$row_create = mysql_query($query);
print mysql_error();
$row1 = mysql_fetch_assoc($row_create);
if (strpos($row1[‘Create Table’], ‘DEFAULT CHARSET=utf8’) !== false)
{
print ‘Table ‘.$table_name.’ — skipped’.»\n»;
continue;
}
$create_table_scheme = str_ireplace(‘cp1251’, ‘utf8’, $row1[‘Create Table’]); // CREATE TABLE SCHEME
$create_table_scheme = str_ireplace(‘ENGINE=InnoDB’, ‘MyISAM’, $create_table_scheme);
$create_table_scheme .= ‘ COLLATE utf8_bin’;
//print $create_table_scheme;
//continue;
$query = ‘RENAME TABLE ‘.$table_name.’ TO ‘.$table_name.’_tmp_export’; // RENAME TABLE;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
$query = $create_table_scheme;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
$query = ‘ALTER TABLE ‘.$table_name.’ DISABLE KEYS’;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
$query = ‘INSERT INTO ‘.$table_name.’ SELECT * FROM ‘.$table_name.’_tmp_export’;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
$query = ‘DROP TABLE ‘.$table_name.’_tmp_export’;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
$time3 = microtime(true);
$query = ‘ALTER TABLE ‘.$table_name.’ ENABLE KEYS’;
mysql_query($query);
$error = mysql_error();
if (strlen($error) > 0)
{
print $error.’ — LINE ‘.__LINE__.»\n»;
break;
}
print ‘Enable keys to ‘.$table_name.’. time -‘.(microtime(true) — $time3).»\n»;
print ‘converted ‘.$table_name.’. time — ‘.(microtime(true) — $time1).»\n\n»;
}
mysql_free_result($rs);
print ‘done. total time -‘.(microtime(true) — $time);
?>
P.S. Сегодня ночью БД проекта вспомни.ру сконвертировал этим скриптом за 17 минут.
Декодер онлайн (decoder online)
Текст успешно скопирован!
Определить исходную кодировку
Recoder v3.1.0 (BOM-remover)
github
Небольшая программа для массового (пакетного) перекодирования файлов из одной кодировки в другую. Доступные кодировки windows-1251, koi8-r, cp866, ISO 8859-5, utf-8, utf-8 с BOM-заголовком. Также умеет искать и удалять BOM-заголовок в файлах и каталогах.
Текущая версия: ¶
-
Скачать recoder v3.1.0 для Windows 7+ 64-бит (9.7 MB)
Запускается без установки, не требует дополнительных библиотек.
-
Скачать recoder v3.1.0 для Ubuntu 20.04+ 64-бит (10.8 MB)
Запускается без установки, не требует дополнительных библиотек.
Некоторые антивирусы (например, VirusTotal) могут показывать наличие вирусов в исполняемом файле. Это связано с использованием PyInstaller и его модулей.
Если это является проблемой, то проект можно запускать из исходного кода или использовать версию v2.
Последнее изменение: ¶
- 3 декабря 2022 г. — добавлена галочка «Искать в подкаталогах».
- 5 марта 2022 г. — приложение переписано на Python (tkinter) с публикацией исходного кода.
Предыдущие версии: ¶
- v3.0.0: Windows (9.7 MB), Linux (11 MB)
- v2.3.0: Windows (7.9 MB), Linux (74 kB)
- v2.2.2: Windows (7.9 MB), Linux (67.7 kB)
- v2.2.1: Windows (7.9 MB), Linux (66.5 kB)
- v2.1.1: Windows (7.2 MB), Linux (48.8 kB)
- v2.1: Windows (8.2 MB), Linux (48.5 kB)
- v2.0: Windows (7.9 MB)
Скриншоты ¶
В общем случае, перекодировать можно в любом направлении, не обязательно именно в utf-8. Можно перекодировать между кириллическими кодировками, например, из koi-8 в cp1251, из utf-8 в koi-8, из utf-8 в cp1251 и обратно. Также рассмотрим ситуацию когда нужно изменить кодировку файлов не только в текущей директории, но и во вложенных.
В Linux перекодировку файлов удобно делать утилитами recode или enconv. Есть и другие перекодировщики, но про них пусть кто-то другой напишет.
Установить recode:
sudo yum install recode
Для использования enconv нужно установить пакет enca:
sudo yum install enca
Обе команды — recode и enconv — имеют кучу возможных опций, в простейших случаях для перекодирования одного или нескольких файлов в одной директории использование такое:
recode cp1251..utf8 myfile.txt
recode cp1251..utf8 *.txt
enconv -L russian -x utf8 myfile.txt
enconv -L russian -x utf8 *.txt
На что следует обратить внимание: для команды recode надо указать направление перекодировки (как минимум, исходную кодировку, в примере это cp1251; если не указана конечная кодировка, то программа заглянет в переменные окружения LC_ALL, LC_CTYPE, LANG). Для enconv указывать направление перекодировки необязательно вообще: программа способна определить исходную кодировку, проанализировав текст файла, а конечная кодировка будет взята из переменных окружения.
То есть, если надо перекодировать файлы в вашу «обычную» кодировку, используемую в системе, примеры могут выглядеть так:
recode cp1251 *.txt enconv -L russian *.txt
Для того, чтобы программа enconv точнее могла определить исходную кодировку файла, ей можно помочь, подсказав, на каком языке написан текст в файле. В нашем примере указан русский язык: «-L russian».
Список языков, известных программе, можно посмотреть так:
enca --list languages
enca — это не опечатка. Программа enconv является частью пакета enca.
Результат:
belarusian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113 czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic croatian: CP1250 ISO-8859-2 IBM852 macce CORK hungarian: ISO-8859-2 CP1250 IBM852 macce CORK lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK slovene: ISO-8859-2 CP1250 IBM852 macce CORK ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr chinese: GBK BIG5 HZ none:
Как перекодировать файлы из/в utf-8, cp1251, koi8 и т. д. рекурсивно в поддиректориях
Для рекурсивного изменения кодировки файлов надо привлечь команду find, затем перекодировать то, что она нашла.
Среди множества опций команды find имеется набор для выполнения действий над найденными файлами. Нас интересует опция «-exec command {} ;».
Здесь:
command — команда, которую надо выполнить для каждого найденного файла;
{} — вместо скобок будет подставлено имя файла, найденного командой find;
; — точка с запятой указывает для команды find, в каком месте заканчиваются параметры команды command.
Надо иметь в виду, что «{}» и «;» может понадобиться экранировать с помощью одинарных кавычек или «\», чтобы предотвратить интерпретацию командной оболочкой (shell expansion).
Собираем всё вместе. Чтобы перекодировать из cp1251 (windows-1251) в utf-8 рекурсивно в поддиректориях все файлы, имена которых заканчиваются на ‘.txt’, надо выполнить:
find /path/to/dir -name '*.txt' -exec recode cp1251..utf8 '{}' \;
или
find /path/to/dir -name '*.txt' -exec enconv -L russian -x utf8 '{}' \;
Ура!
