Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Victor Wagner                        2:5020/400     06 Jun 2006  23:44:58
 To : "Dmitry N.Ananyev"
 Subject : Re: В какой кодировке Linux записывает строки в файлы?
 -------------------------------------------------------------------------------- 
 
  Dmitry N.Ananyev <dtc.98@relcom.ru> wrote:
 
  DNA> В какой кодировке Linux записывает строки в файлы? 
 
 Hи в какой. Файл с точки зрения Linux-а - поток байт.
 
 Понятие кодировки возникает на более высоком уровне - уровне прикладных
 программ. 
 
 В системе есть понятие "локаль", которое определяет как следует
 обращаться с рядом вещей, зависящих от местоположения и языка
 пользователя. 
 
 Одна из категорий локали - LC_CTYPE, которая задает интерпретацию
 символов как букв и не букв, и одно из свойств этой категории -
 кодировка. 
 
 Локаль может быть задана для каждого процесса индивидуально, через переменные
 среды, хотя обычно она задается глобально для пользователя, или даже
 для системы в целом через установку данных переменных в стартовых
 скриптах bash (но никто не мешает для конкретного процесса значения
 этих переменных изменить).
 
  DNA> Можно явно задать кодировку строк (к примеру в bash),
 
 Можно преобразовать файл из текущей кодировки в любую другую с помощью
 утилиты iconv, которая является  оболочкой вокруг библиотечной функции
 iconv. Многие программы (например vim) умеют работать с этой функцией
 непосредственно, и читать или писать файлы в любой кодировке в какой
 попросишь независимо от локали, в которой запущены.    
 
 DNA> чтобы запись строк в  файлы была в Unicode 2-х байтовом? 
 
 Вот с этим - сложнее. Большая часть программ в Linux обрабатывает строки
 в текстовых файлах в соответствии с конвенциями языка C, т.е. первый же
 встретившийся нулевой байт (а в UCS2 он встретится в первом же
 ASCII-символе, т.е. пробеле, знаке препинания или латинской букве) будет
 воспринять как конец строки.
 
 Поэтому наиболее распространенным способом представления unicode в Linux
 является utf-8 - представление в котором на символ отводится переменное
 число байт и нулевые байты не встречаются.
 
 Рекомендуется с этим представлением и работать, ну а если уж приспичило
 получить файл в ucs2, преобразовывать данные в эту кодировку с помощью
 iconv в самый последний момент, когда вся обработка уже произведена.
 
 Кстати, существуют два способа двухбайтового представления того
 подмножества unicode, которое влезает в 2 байта (вообще-то это не весь
 юникод, там больше 65536 символов) - в одном из них в каждой паре байтов
 старший байт идет первым, а младший вторым, точно так же как в записи
 числа мы сначала пишем старшие разряды, а потом младшие. Это так
 называемый Big-Endian byte order который используется в качестве
 стандартного для передачи многобайтовых чисел по сети, а также для
 внутреннего представления в процессорах Sparc, PowerPC и многих других.
 
 Во втором способе младший байт идет сначала, а старший потом. Почему-то
 в процессорах Intel этот уродский и нечелеовеческий (т.е. не похожий на
 запись чисел на бумаге) порядок выбран для внутреннего представления
 чисел. Hазывается Little-Endian. 
 
 Соответственно, iconv поддерживает выходные кодировки UCS-2LE и UCS-2BE.
 
  
 DNA> Заранее спасибо. 
 
   -- 
 --- ifmail v.2.15dev5.3
  * Origin: Free Net of Leninsky,45 (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 В какой кодировке Linux записывает строки в файлы?   Dmitry N.Ananyev   06 Jun 2006 23:02:18 
 Re: В какой кодировке Linux записывает строки в файлы?   Victor Wagner   06 Jun 2006 23:44:58 
 Re: В какой кодировке Linux записывает строки в файлы?   Dmitry Fedorov   07 Jun 2006 10:45:55 
 Re: В какой кодировке Linux записывает строки в файлы?   Serhiy Storchaka   07 Jun 2006 16:31:57 
 Re: В какой кодировке Linux записывает строки в файлы?   Victor Wagner   07 Jun 2006 17:40:44 
 Re: В какой кодировке Linux записывает строки в файлы?   Dmitri Minaev   08 Jun 2006 13:27:12 
 Re: В какой кодировке Linux записывает строки в файлы?   Serhiy Storchaka   09 Jun 2006 18:38:39 
 Re: В какой кодировке Linux записывает строки в файлы?   Eugene B. Berdnikov   10 Jun 2006 01:08:22 
 Re: В какой кодировке Linux записывает строки в файлы?   Kirill Frolov   09 Jun 2006 17:48:10 
 Re: В какой кодировке Linux записывает строки в файлы?   Eugene B. Berdnikov   10 Jun 2006 01:08:22 
 Re: В какой кодировке Linux записывает строки в файлы?   Kirill Frolov   10 Jun 2006 02:54:00 
 Re: В какой кодировке Linux записывает строки в файлы?   Eugene B. Berdnikov   10 Jun 2006 13:08:12 
 Re: В какой кодировке Linux записывает строки в файлы?   Kirill Frolov   07 Jun 2006 00:00:39 
 В какой кодировке Linux записывает строки в файлы?   Artem Korneev   07 Jun 2006 01:26:56 
Архивное /ru.linux/1517893455da0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional