Данная страница - это Глава 2 раздела "Unicode и кириллица: проблемы и решения" моего сайта.

Go to the English language version of this page

Unicode и кириллица: Copy/Paste и другие проблемы

Paul Gorodyansky 'Cyrillic (Russian): instructions for Windows and Internet'



Проблема: Нечитабельный текст ('кракозябры') или вопросительные знаки (????) вместо кириллицы во время работы с Word 97 и новее или другими Unicode-программами
(MS Internet Explorer, Outlook Express, MS Outlook, Netscape 7/Mozilla,...):



Примечание.
Эти проблемы обычно отсутствуют под 'русской' Windows.
Когда я ниже пишу "русская Windows", это не означает только локализованную версию, где вместо "Start" на кнопке - "Пуск". Нет, это любая, пусть даже и с английским интерфейсом Windows, где кириллица является системной кодовой страницей, то есть system code page = "Cyrillic, 1251".
(system code page обсуждается в деталях на моей странице "Полная русификация, на системном уровне")

Поэтому ниже, чтобы не писать длинногo "...система, где system code page = 1251...", я использую для таких систем название "русская Windows".



Причиной вышеописаных проблем является то, что эти новые Unicode-программы сильно отличаются в плане языковой поддержки от 'старых' программ, которые 'знают' только 'старые' (legacy) кодировки, такие как "Western European, Code Page 1252" или "Cyrillic, Code Page 1251".

Примеры неюникодовых приложений:


Ниже приведены способы решения указанных в начале страницы проблем

Примечание.
Предполагается, что кириллические шрифты и русская клавиатура уже активны, установлены.
Если же нет, то надо это сделать до того, как читать дальше.
Соответствующие инструкции - в разделе "Введение. Кириллица под Windows" на заглавной странице моего сайта.
             
Оглавление


  

Копирование (Copy/Paste):
Unicode-программа ---> не-Unicode программа

Вопросительные знаки ("???") при попытке скопировать русский текст из юникодовой программы (Word 97+, Internet Explorer, Outlook Express, MS Outlook, Netscape 7/Mozilla,...) в неюникодовую (Netscape 4.79, UltraEdit, Dreamweaver,...).

Обычно это происходит под нерусской версией Windows (то есть, где System Code Page - не 1251).
Перекодировка из Unicode в неюникодовый текст базируется на системной кодовой странице (system code page) поэтому под Windows, где system code page - "Western" происходит следующее:

Решение проблемы: надо, в качестве 'промежуточного пункта', использовать окно программы, которая, во-первых, понимает Unicode, и, во-вторых, позволяет указать кодировку, то есть, указать, что идёт копирование именно кириллического текста.

Предлагаю на выбор 2 бесплатные программы такого типа (щёлкните на нужное, чтобы прочесть соответствующую инструкцию):


Netscape 4.7x как 'промежуточный пункт' при Copy/Paste

Netscape 4 может помочь при копировании из юникодовой программы (например, Internet Explorer или Word 97/2000) в не-юникодовую (например, текстовый редактор или Dreamweaver):

Netscape Communicator 4.х имеет встроенный HTML редактор - Composer, который как раз годится для наших целей - он понимает Unicode, и дает возможность явно указать, что идёт работа с кириллицей:

Теперь можно использовать это окно как 'промежуточный пункт' при копировании:

К Оглавлению


Текстовый редактор UniPad как 'промежуточный пункт' при Copy/Paste

UniPad (специальный редактор для Unicode) может помочь при копировании из юникодовой программы (например, Internet Explorer или Word 97/2000) в не-юникодовую (например, текстовый редактор или Dreamweaver):

Теперь можно использовать это окно, как 'промежуточный пункт' при копировании:

К Оглавлению


   

Копирование (Copy/Paste):
не-Unicode программа ---> Unicode программа

Нечитабельный текст ('кракозябры') при копировании кириллицы из не-юникодоовй программы (например, Netscape 4.79 или UltraEdit или Macromedia Dreamweaver) в юникодовую (например, Word 97/2000, Internet Explorer, Outlook Express, MS Outlook 2000, Netscape 7/Mozilla).

Обычно это происходит под нерусской версией Windows, то есть, где кириллица не является системной кодовой страницей (system code page).
Unicode-программа 'не знает', что идёт обработка именно русского текста (кириллицы) и поэтому использует system code page при перекодировке не-юникодового текста в юникодовый.
Например, под английской версией Windows (system code page - "Western European", 1252) система смотрит на исходный текст, как будто это Западно-Европейский текст, а не кириллица, и переводит его в Unicode по схеме
    "Western European, CP-1252" ---> Unicode

При этом, естественно, с кириллицей происходят нехорошие вещи :)

Например:
В исходном не-юникодовом тексте была русская буква 'д'. Её код в кодировке "Windows(Cyrillic), CP-1251" - 228.
Но ведь юникодовая программа считает, что исходный текст не в кириллической кодировке, а в "Western, CP-1252"! А в этой кодировке значение 228 - это немецкая буква a-umlaut ('a' с двумя точками над ней).
Поэтому происходит вот такая перекодировка:
    не-Unicode a-umlaut ---> Unicode a-umlaut
и именно эту немецкую букву Вы видите - в качестве 'кракозябр' :-) - вместо русской 'д' после копирования в юникодовую программу.



Есть 2 возможных решения этой проблемы. В некоторых случаях срабатывает очень простой Способ no. 1, если же не сработает, тогда придётся использовать универсальный Способ no. 2.

Примечание. Word 2000/XP имеет своё, особое решение этой проблемы - см. ниже раздел "Специальный MS шаблон Eefonts для Word 2000/XP".


Способ 1
Используйте следующий приём при копировании русского текста из неюникодовой программы (Netscape 4.79, UltraEdit, Dreamweaver, ...) в Windows Clipboard:

Но этот способ не всегда срабатывает (не для каждой неюникодовой программы).
В таком случае:


Специальный MS шаблон Eefonts для Word 2000/XP

Микрософт предлагает бесплатный шаблон для решения проблемы 'кракозябров' при копировании кириллицы из неюникодовой программы в Word 2000/XP.
Этот же шаблон помогает 'лечить' кракозябры, получающиеся при загрузке в Word 2000/XP старого .doc, сделанного в неюникодовом Word 6.

В русской версии Word 2000/XP этот шаблон уже присутствует - в меню есть пункт
  Сервис / Восстановить поврежденный текст,
а для английской версии:



Итак, когда Вы скопируете русский текст из неюникодовой программы в окно Word 2000/XP и увидите кракозябры, то:

Появится нормальная кириллица!

К Оглавлению


Способ 2
для копирования не-Unicode --> Unicode

Универсальное решение для такого случая - при копировании кириллицы из неюникодовой программы (Netscape 4.79, Dreamweaver, текстовый редактор, ...) в юникодовую (Internet Explorer, Outlook, ...) заключается в следующем:

Надо в качестве 'промежуточного пункта', использовать окно программы, которая, во-первых, понимает Unicode, и, во-вторых, позволяет указать кодировку, то есть, указать, что идёт копирование именно кириллического текста.

Текстовый редактор UniPad как 'промежуточный пункт' при Copy/Paste

UniPad (специальный редактор для Unicode) может помочь при копировании из неюникодовой программы (например, текстовый редактор или Dreamweaver) в юникодовую (например, Internet Explorer или Word 97/2000):

Теперь можно использовать это окно, как 'промежуточный пункт' при копировании:

К Оглавлению


 

Кириллица в MS Word 97 и более поздних версиях:
работа с простыми текстовыми (.TXT) файлами

Эти 2 проблемы бывают под нерусскими Windows, то есть, где кириллица (CP-1251) не является системной кодовой страницей (system code page).

Простой текстовый файл .TXT (plain text file) содержит не-Unicode текст, поэтому когда юникодовая программа Word 97/2000 работает с таким файлом, то ей приходится делать перекодировку из Unicode (при Save As) и в Unicode (при File/Open).
Эта перекодировка делается 'по умолчанию' на основе системной кодовой страницы, поэтому под нерусской Windows, где системная кодовая страница - "Western, 1252", Word пытается - для текста в кодировке "Cyrillic(Windows-1251)"! - перекодировать по схеме
  "Western European, Windows-1252" <-----> Unicode
и именно поэтому люди имеют те самые 2 проблемы, указанные выше.

Решение: Дать понять системе, что этот простой не-Unicode текст - именно в кодировке "Cyrillic(Windows-1251)", а не той, которая соответствует системной кодовой странице.

MS Word 2000 и более поздние версии имеют встроенные опции для этого, а для Word 97 надо использовать вспомогательную программу как промежуточный шаг.


   
Подробное описание решения этих 2-х проблем с простым текстовым файлом (.TXT)


 
Загрузка (File/Open) кириллического .TXT в MS Word 97+

Допистим, у Вас есть простой текстовый файл A.TXT с кириллицей в кодировке 1251 (называемой часто "Cyrillic(Windows)" или "Windows-1251").

Word вер. 2000 и выше даёт вам возможность указать, что это именно 1251 файл, а вот Word 97 требует более сложного решения.

MS Word 2000 и более поздние версии

MS Word 97

Есть несколько методов решения проблемы загрузки русского .TXT в Word 97 на нерусской машине путём использования вспомогательной программы, как промежуточного шага. давайте рассмотрим 2 из них:


 
Использование Netscape для загрузки русского .TXT в Word 97

В Netscape, делаем File/Open, выбираем "Text (.TXT)" в качестве "Files of Type".
Ваш русский файл A.TXT загружается в окно Netscape. Теперь надо сменить кодировку:

Теперь на экране должен быть нормальный русский текст и Вы можете спокойно его скопировать в Word 97.


 
Использование неюникодового текстового редактора для загрузки русского .TXT в Word 97.

Надо загрузить сначала этот Ваш A.TXT в простой не-юникодовый текстовый редактор, где русский шрифт выбран рабочим и текст виден нормально в окне.

После этого надо скопировать текст в Word 97, используя методы Copy/Paste, описанные выше на этой странице.

Как я это делаю (с помощью UltraEdit):

Назад к началу раздела Две проблемы с русскими .TXT файлами

К Оглавлению


 

Сохранение (File/SaveAs) русского документа из Word 97+ как "Text Only (.TXT)"

Допустим у Вас в окне Word 97 (или более поздней) - русский документ, и Вы хотите его сохранить в виде простого текстового файла A.TXT.

Word 2000 (и выше) даёт вам возможность указать программе, что текст будет в кодировке Cyrillic, а вот Word 97 требует вспомогательной программы в качестве промежуточного шага.

MS Word 2000 и более поздние версии

Созданный .TXT файл будет содержать нормальный Windows-1251 текст, а не 'вопросики'.

MS Word 97

Итак, в окне MS Word 97 у Вас русский документ, который Вы хотите сохранить как A.TXT.
Не получится - надо сначала скопировать текст в другой, неюникодовый текстовый редактор, а уж из него сохранить в виде .TXT.

Если у Вас есть Ваш любимый неюникодовый редактор простых текстов (.TXT), где можно работать с русскими .TXT файлами, то вызовите его, а если нет ещё такого редактора, то придётся установить - их полно, например, мой любимый UltraEdit.

Вот как я это делаю с помощью UltraEdit:

Назад к началу раздела Две проблемы с русскими .TXT файлами

К Оглавлению


Paul Gorodyansky. 'Cyrillic (Russian): instructions for Windows and Internet'