- «Кракозяблики» в Windows
- Конспект о том, как сменить кодировку в Блокноте по умолчанию
- Немного лирики о том, почему всё так, а не иначе с кодировками в Windows
- Инструкция как сменить кодировку в Блокноте по умолчанию с ANSI на другую.
«Кракозяблики» в Windows
Рано или поздно любой пользователь Windows сталкивается с проблемой кодировки текста. «Кракозяблики» настигают всех, кто более-менее часто пользуется компьютером. Особенно остро эта задача стоит перед теми, кто не просто пользуется компьютером, а создаёт какой-то осмысленный контекст, например у себя на сайте. Сайт может находиться на удалённом сервере, где кодировка может отличаться от той, которую предлагает Windows по умолчанию.
Очень кратко:
C:\Windows\ShellNew
— создаем пустой текстовый файл, сохраняемым как UTF-8, переименовываем вUTF-8.txt
. Он будет шаблоном.- Заходим в реестр
HKEY_CLASSES_ROOT
/.txt
/ShellNew
/ — создаем "Строковый параметр": имя -FileName
/ значение -UTF-8.txt
Немного лирики о том, почему всё так, а не иначе:
Но и для пользователей, остающихся обычными «пользователями ПК» проблема с кодировками кириллистических символов иногда встаёт довольно остро. «Кракозяблики» — наследие предыдущей эпохи, когда каждый программист писал собственную таблицу кодировок. Например, скачал и хочешь почитать интересную книжку, а тут такое >=O
-- ...‚Ґа®пв®, ў иЁ¬ ЇҐаўл¬ бҐамҐ§л¬ ®вЄалвЁҐ¬, ¤®Єв®а ЏЁ«м¬ ,
б«Ґ¤гҐв бзЁв вм в Є §лў Ґ¬л© а ¤Ё в ЏЁ«м¬ ?
-- Џ®« Ј о, зв® Ґв. ђ ¤Ё в ЏЁ«м¬ -- нв® Ґ ЇҐаў®Ґ, Ґ
бҐа쥧®Ґ Ё, б®Ўб⢥®, Ґ ®вЄалвЁҐ. € Ґ ᮢᥬ ¬®Ґ.
-- ‚л, ўҐа®пв®, игвЁвҐ, ¤®Єв®а. ђ ¤Ё в ЏЁ«м¬ -- Ї®пвЁҐ,
Ё§ўҐб⮥ ўбпЄ®¬г иЄ®«мЁЄг.
-- ќв® ¬Ґп Ґ г¤Ёў«пҐв. ђ ¤Ё в ЏЁ«м¬ Ё Ўл« ®вЄалв ўЇҐаўлҐ
Ё¬Ґ® иЄ®«мЁЄ®¬. Љ ᮦ «ҐЁо, п Ґ Ї®¬о, Є Є ҐЈ® §ў «Ё. Џ®б¬®ваЁвҐ г
‘вҐвб® ў ҐЈ® "€бв®аЁЁ Џ®бҐйҐЁп" -- в ¬ ўбҐ нв® Ї®¤а®Ў® а ббЄ § ®.
ЋвЄал« а ¤Ё в ўЇҐаўлҐ иЄ®«мЁЄ, ®ЇгЎ«ЁЄ®ў « Є®®а¤Ё вл ўЇҐаўлҐ бв㤥в,
§ў «Ё а ¤Ё в Ї®зҐ¬г-в® ¬®Ё¬ Ё¬ҐҐ¬.
-- „ , б ®вЄалвЁп¬Ё Їа®Ёб室пв Ё®Ј¤ г¤ЁўЁвҐ«млҐ ўҐйЁ. ЌҐ ¬®Ј«Ё
Ўл ўл ®ЎкпбЁвм иЁ¬ б«ги ⥫п¬, ¤®Єв®а ЏЁ«м¬ ...
И так продолжалось до тех пор, пока не начали вводиться стандарты. Но и стандартов на текущее время уже немало. Например, есть кодировка Unicode, есть UTF-8, есть UTF-16 и так далее...
ВАЖНО!
Я так и не нашёл, как сменить кодировку по умолчанию при открытии Блокнота и создания нового документа уже из открытой сессии Блокнота.
Зато нашёл, как сменить кодировку по умолчанию, когда текстовый документ сначала создаётся (из контекстного меню) и только потому открывается Блокнотом. Тогда кодировка файла будет та, которая будет прописана по умолчанию. Об этом и пойдёт ниже речь.
Итак, для того, чтобы поменять кодировку создаваемых текстовых документов по умолчанию, нам понадобиться внести изменения в Реестр Windows.
В данной статье рассмотрен пример для файлов с расширением .txt
, а т.к. в Windows программой, открывающей эти файлы по умолчанию является Блокнот, то некоторые считают, что меняют кодировку по умолчанию в самом Блокноте. Но это не так. Меняется кодировка по умолчанию создаваемого файла. Блокнот лишь открывает документ, считывая уже прописанную в нём кодировку. В самом Блокноте прошита кодировка ANSI. И, похоже, это не поменять средствами Реестра Windows.
Как бы Windows не старался насаждать свои стандарты, большинство современных серверов работают на *nix операционных системах потому, что эти системы имеют открытый код и не имеют "корпоративной тайны на семью печатями". То есть, в них можно разобраться самостоятельно: что и как работает. Думаю, и дальше будет такая же тенденция. Все более-менее «продвинутые пользователи ПК» будут использовать программное обеспечение с открытым кодом для работы, и программы «из пакетов» для быстрой обработки данных (чтобы не изобретать велосипедов). На *nix операционных системах на текущий момент кодировкой по умолчанию является кодировка UTF-8
. Её можно без особых заморочек выставить другой, но зачем, если она на большинстве серверов и они нормально друг с другом *nix «общаются»? У меня на сервере тоже стоит UTF-8
и это удобно. Поэтому задача у меня стояла, как сменить кодировку в Блокноте по умолчанию для Windows с ANSI
на общепринятую UTF-8
.
Ну и хватит лирики. К делу!
Сперва удостоверимся в том, что в Блокноте стоит по умолчанию кодировка ANSI
, для этого достаточно «Сохранить как...» любой документ и увидеть его кодировку:
Что делать, чтобы сменить кодировку в Блокноте по умолчанию с ANSI
на другую:
- Открываем Блокнот или создаём новый текстовый документ и потом его открываем в Блокноте
- Меняем кодировку текстового файла
- Сохраняем этот документ (я свой назвал по названию кодировки
UTF-8.txt
) - Перемещаем созданный документ в папку
C:\Windows\ShellNew
(сразу создать текстовый документ в этой папке не получится - защита Windows от внесения изменений в системные папки)- Если папки нет (что мало вероятно), то её нужно создать и также переместить на место:
C:\Windows\ShellNew
- Если папки нет (что мало вероятно), то её нужно создать и также переместить на место:
- Теперь открываем редактор реестра
- Находим папку
HKEY_CLASSES_ROOT
/.txt
/ShellNew
/ (она должна быть, если нет, то создаём) - Создаём строковый параметр:
- С именем
FileName
- Со значением
UTF-8.txt
(имя того файла, который мы создали в п.3 перенесли в папкуC:\Windows\ShellNew
в п.4)
- С именем
- Радуемся! Ибо это всё =)
Теперь при создании текстового файла с помощью контекстного меню у него будет та кодировка, которая была нами установлена в файле-образце, лежащем в папке C:\Windows\ShellNew
. Проверяем:
Всё работает! =)
Кстати!
Если в файле-образце набрать какой-то текст, то он будет во всех новых файлах, создаваемых с помощью контекстного меню.
Не знаю, где это можно применить, т.к. у меня мало рутины с текстовыми файлами, но это может пригодиться тем, кто работает с шаблонными файлами. Или, например, для создания текстового файла-шаблона для HTML-документов, который можно создать таким же способом. Тогда не нужно будет каждый раз писать структуру
<head>
,<title>
,<meta>
,<body>
и т.д..
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)