forked from Etersoft/libnatspec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME-ru.html
173 lines (168 loc) · 16.8 KB
/
README-ru.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title>FreeSource : БиблиотекаNATSPEC</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="stylesheet" type="text/css" href="print_files/wakkaprint.css"></head>
<body>
<div class="header">
<h1>
FreeSource:
<a href="http://www.freesource.info/wiki/bibliotekanatspec">БиблиотекаNATSPEC</a> (Версия для печати)
</h1>
</div>
<div class="pageBefore"><img src="print_files/z.gif" alt="" style="display: block;" align="top" border="0" height="1" width="1"></div><div class="page">
<a name="h301-1"></a><h1> Библиотека NATSPEC </h1>
<br>
Библиотека NATSPEC предназначена для сглаживания национальных особенностей при использовании программ, а точнее:<br>
<ul><li> решения проблемы с кодировкой для большинства случаев;
</li><li> предоставления различных вспомогательных средств, облегчающих локализацию программ.</li></ul>
<br>
<strong>Обратите внимание, что данная программа не позволяет решать национальные и межэтнические конфликты.</strong><br>
<br>
<!--notypo--><fieldset><legend><strong> Оглавление документа </strong></legend><div class="toc1"><a href="#h301-2"> Причины появления </a></div><div class="toc1"><a href="#h301-3"> Зачем она нужна </a></div><div class="toc1"><a href="#h301-4"> Как она устроена </a></div><div class="toc1"><a href="#h301-5"> Где скачать и как ознакомиться </a></div><div class="toc1"><a href="#h301-6"> Как использовать </a></div><div class="toc1"><a href="#h301-7"> Подобные проекты </a></div><div class="toc2"><a href="#h301-8"> Пакет h2du </a></div><div class="toc2"><a href="#h301-9"> iconv </a></div></fieldset><!--/notypo--><br>
<a name="h301-2"></a><h2> Причины появления </h2>
<br>
Пользователь Linux, который действительно работает в этой системе,
часто сталкивается с проблемами кодировок: как содержимого
файлов, так названий файлов. Практически на каждом шагу
встречаются случаи, когда пользователя заставляют указывать кодировку
(названий) файлов, с которыми он имеет дело.
Это происходит при<br>
<ul><li> монтировании дискет, <span class="nobr">компакт-дисков</span>, <span class="nobr">флэш-дисков</span>, принесённых жёстких дисков и других носителей;
</li><li> монтировании сетевых ресурсов через SAMBA;
</li><li> записи дисков (создании файловых систем) с помощью команд mkisofs, growisofs, программ k3b, xcdroast и подобное;
</li><li> в файловом менеджере mc, если вы хотите воспользоваться заложенной туда возможностью перекодирования текстов</li></ul>
<br>
<br>
Более того, существует целое непаханное поле программ, где надо бы указывать кодировку, а нечем:<br>
<ul><li> в <span class="nobr">ftp-серверах</span> и <span class="nobr">ftp-клиентах</span>;
</li><li> все используемые для установки ОС файловые системы; файловая система <span class="missingpage">Rock Ridge</span> на оптических дисках;
</li><li> многие <span class="nobr">мультимедиа-проигрыватели</span>.</li></ul>
<br>
Зачастую эти проблемы не решены, или решены частным образом, или решены не совсем корректным патчем.<br>
<br>
Становится понятно, что в системе должна быть возможность получить ответ на следующие вопросы:<br>
<ul><li> какая кодировка используется для хранения названий файлов в системе?
</li><li> какая кодировка используется для хранения содержимого файлов?</li></ul>
<br>
При этом часто можно слышать мнение, что эти ответы
в общем случае не имеют ответа, и принципиально иметь
не могут,<br>
а потому не надо и невозможно пытаться на них ответить.<br>
По большому счёту ситуацию практически исправляет (если полностью забыть о совместимости) полный перевод<br>
системы на кодировку <span class="nobr">UTF-8</span>. К сожалению, даже при этом возникнет ряд проблем (см. <a name="problemyperexodanautf8" href="http://www.freesource.info/wiki/Problemy_Perexoda_Na_UTF8?v=eop" class="">Проблемы Перехода На UTF 8</a>)<br>
<br>
Но вопросы совместимости никто не отменял и в любом
случае порядок взаимодействия как с другими операционными
системами (Windows, DOS, MAC), так и с <span class="nobr">Unix-подобными</span> операционными системами должен быть установлен и сформулирован. Особенно это важно для дистрибутива.<br>
<br>
По (возможно, беглом) рассмотрении кода таких проектов как WINE, Linux kernel, gettext, <span class="missingpage">Ly X</span>,
GLIBC, GLIB, mount, submount, cdrtools, zip, dia, beep, xmms были
сформулированы требования и создана реализация библиотеки, которая
позволяет получать ответы на вопросы о кодировках,<br>
а также имеет ряд вспомогательных функций, востребованных во многих проектах.<br>
<a name="h301-3"></a><h2> Зачем она нужна </h2>
<br>
Существует множество программ, тесно работающие с кодировками,
но по объективным обстоятельствам идущие своим путём в их
поддержке.<br>
Чего стоит только поддержка перекодирования, встроенная в mkisofs,
и использующая nls, выдранный из ядра Linux неизвестно какой
версии.<br>
<br>
Данный проект создан для того, чтобы решать большинство вопросов,
связанных с перекодированием, вне конкретной программы.
Это повышает<br>
переносимость, и позволяет не отвлекаться конкретному проекту
на написание костылей для решения общесистемных проблем.<br>
<br>
Библиотека не является серебряной пулей или панацеей,
это всего лишь средство повысить переносимость данных между
разными системами, и облегчить жизнь пользователей
и программистов на текущем переходном этапе, когда всё
прогрессивное человечество одной ногой перешло в <span class="nobr">UTF-8</span> (нет, эта аббревиатура не относится к НЛО или гробам).<br>
<a name="h301-4"></a><h2> Как она устроена </h2>
<br>
Библиотека LIBNATSPEC определяет такие важные понятия, как<br>
<ul><li> кодировка локальной файловой системы (filename encoding)
</li><li> пользовательская локаль (user locale)
</li><li> системная локаль (system locale)
</li><li> кодировка пользовательской локали (charset)
</li><li> кодировка (charset) и кодовая таблица (codepage) иных операционных систем (WIN,DOS,MAC) для данной локали</li></ul>
(это работает корректно только при соответствии поддерживаемых локалей в LIBNATSPEC и GLIBC)<br>
<br>
и предоставляет API для их использования, а также дополнительные функции, позволяющие:<br>
<ul><li> дополнить параметры монтирования указанием кодировок в соответствии с типом файловой системы
</li><li> преобразовывать строки из одной кодировки в другую
с транслитерацией при необходимости (для целей отображения
пользователю в ситуациях, когда его локаль не позволяет
воспроизвести все используемые символы)</li></ul>
<br>
Принципе построения: Вся получаемая информация по возможности
зависит от локали пользователя, если она не определена,
используется системная локаль.<br>
<strong>Предложенная в natspec автоустановка кодировок
монтирования выставляет автоопределённые значения по умолчанию.
НИКТО НЕ ОТМЕНЯЛ возможность задать кодировку вручную. Просто
умолчание становится не iso-<span class="nobr">8859–1</span>, а то, которое положено по локали.</strong><br>
<br>
Базой для эвристики является таблица, получаемая примерно
по следующему алгоритму: По списку локалей, установленных
с glibc, имеющейся в локали информации об основной
кодировке, а также программе, получающей информации
о соответствии кодировок различных ОС из WINE, <br>
формируется статический массив, который используется в библиотеке
в дальнейшем для определения кодировки по локали
и пр.<br>
<br>
Библиотека написана на языке C с учётом максимально возможной
переносимости. В настоящий момент для сборки требуется<br>
glibc и libpopt. Тестирование на других системах не проводилось.<br>
Имеются интерфесы для других языков:<br>
<ul><li> python</li></ul>
<br>
Имеется консольная программа, позволяющая получать определённые в библиотеке параметры. Например<br>
<div class="indent"> $ natspec -l – показать системную локаль<br>
$ natspec -i – вывести всю доступную информацию</div>
(просьба посмотреть и высказать свои замечания по качеству определения ситуации на вашей машине)<br>
<br>
Для ALT Linux:<br>
В системе имеется файл /etc/sysconfig/i18n, в котором, кроме
всего прочего, задана системная локаль строчкой LANG=локаль. Например,
у меня в системе указано в этом файле: LANG=ru_RU.<span class="nobr">KOI8-R</span><br>
<a name="h301-5"></a><h2> Где скачать и как ознакомиться </h2>
<br>
Библиотека доступна в свободном репозитории пакетов <a href="http://sisyphus.ru/" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="print_files/web.gif" alt="" border="0">Сизиф</a><br>
На следующих ресурсах всегда выложены последние версии библиотеки:<br>
<ul><li> <a href="http://etersoft.ru/download/natspec" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="print_files/web.gif" alt="" border="0">http://etersoft.ru/download/natspec</a>
</li><li> <a href="ftp://ftp.altlinux.ru/pub/people/lav/natspec" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="print_files/web.gif" alt="" border="0">ftp://ftp.altlinux.ru/pub/people/lav/natspec</a> (здесь также есть src.rpm, а также самая свежая сборка пакета)</li></ul>
<br>
С любыми вопросами можно обращаться по адресу, указанному в файле README проекта.<br>
Я буду рад помочь собрать эту библиотеку для вашего дистрибутива.<br>
<a name="h301-6"></a><h2> Как использовать </h2>
<br>
В каталоге examples проекта лежат исправленные файлы и образцы патчей, решающих проблему<br>
с кодировками для ряда программ. Возможно в вашей
системе эти патчи ещё не применены, или они
не внесены<br>
в основную ветвь разработки программы.<br>
<a name="h301-7"></a><h2> Подобные проекты </h2>
<br>
Существуют программы, которые можно применять дополнительно для обеспечения совместимости.<br>
<a name="h301-8"></a><h3> Пакет h2du </h3>
<br>
Предоставляет программу dos2unix, которая позволяет осуществлять
преобразования концов строк из принятой в одной системе
в другую.<br>
Имеется возможность автоматического определения исходного формата.<br>
<a name="h301-9"></a><h3> iconv </h3>
<br>
Рекомендуемое средство для перекодирования файлов из одной
кодировки в другую. Следует подчеркнуть, что при неуказании
одной из кодировок она подразумевается равной кодировке
локали.<br>
<br>
<br></div>
</body></html>