Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> настройка —> CP1251 на FreeBSD

Локализация FreeBSD на CP1251.

Автор: northern.


Содержание.
1. Использование locale KOI8-R.
2. Использование locale CP1251 вместо KOI8-R.
3. Монтирование разделов ntfs и fat.


   Вскоре, после курса молодого бойца и успешного выживания  на совершенно новом  для меня плацдарме под названием FReeBSD, у меня возникла одна из задач по монтированию разделов windows во freebsd. Тоесть на одной машине стоит виндовс и фря, есть раздел fat 32 специально для обмена файлами между этими ОС.  Хотелось, чтобы текстовые документы, набранные в виндовсе, можно было смотреть и по возможности редактировать на фре и наоборот.
   Все опыты проводил на фре 6.1.

1. Использование locale  KOI8-R
   Русификация, основанная на  KOI8-R, описана в  статье  у lissyar`ы, отмечу лишь, что для моей задачи этот способ не подошел, и я начал рыть в сторону кодировки cp1251.

2. Использование locale CP1251 на консоли и виртуальных терминалах, вместо KOI8-R
   Локаль cp1251 поставляется в дистрибутиве фре. Находится она в папке  /usr/share/locale/ru_RU.CP1251. Для локализации в handbook`е  достаточно хорошо описывается два метода.
Первый (рекомендуемый) заключается в задании переменных в классе логина, другой метод заключается в задании переменных окружения в инициализационном файле системной оболочки.
   Первый метод. Идём в /etc/login.conf, находим в нём:
russian|Russian Users Accounts:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:\
:tc=default: 

и добавляем новый класс:
winrus|Russian Win Accounts:\
:charset=CP1251:\
:lang=ru_RU.CP1251:\ 
:tc=default: 

Для сохранения внесённых изменений в бд делаем:
northern# cap_mkdb /etc/login.conf

Далее, утилитой vipw или pw (pw usermod user_name -L winrus) меняем имя класса пользователя, в моём случае russian меняем на winrus.
Если глянуть утилитой vipw должно получиться следующее:
было
 root:XXXXXXXXXX:0:0:russian:0:0:Charlie &:/root:/bin/csh

стало
 root:XXXXXXXXXX:0:0:winrus:0:0:Charlie &:/root:/bin/csh

В общем-то, новый класс можно и не добавлять, можно подправить старый (у меня russian).  
   Ворой метод. Добавляем:
для Bourne-Shell / Bash в файл /etc/profile:
LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL
MM_CHARSET=CP1251; export MM_CHARSET 

для Csh / Tcsh в файл /etc/csh.login:
setenv LANG ru_RU.CP1251 
setenv MM_CHARSET CP1251

или делаем тоже самое у пользователя в /home, в .profile/.bash_profile (shell/bash), либо в .login (csh/tcsh).
Для настройки консоли и виртуальных терминалов, необходимо иметь два файла:
   1. файл клавиатурной раскладки для кодировки cp1251 -  ru.cp1251.kbd. Качаем и кладем в  /usr/share/syscons/keymaps
   2. для отображения будем использовать cp866, для этого нужен файл таблицы перекодировки из cp1251 в cp866 - win2cpp866.scm. Качаем и кладем в /usr/share/syscons/scrnmaps.
Редактируем  файл /etc/rc.conf:
... 
keymap=ru.cp1251 
# можно не использовать, by default клавиша "CAPS LOCK" 
#keychange="61 ESC[K" 
scrnmap="win2cpp866" 
font8x16=cp866b-8x16 
font8x14=cp866-8x14 
font8x8=cp866-8x8
... 


Проверим и при необходимости поправим содержимое файла /etc/ttys. Он должен содержать похожие строки:
ttyv0 "/usr/libexec/getty Pc" cons25r on secure 
... 
ttyv5 "/usr/libexec/getty Pc" cons25r on secure 
... 

все cons25 на до исправить на cons25r.
Перерегружаемся, смотрим результат.

3. Теперь, для удобства, осталось подмонтировать разделы fat и ntfs. Приведу в пример мой файл fstab:

# Device        Mountpoint   FStype  Option               Dump Pass#
/dev/ad1s1b	none	   swap	sw	                  0    0	
/dev/ad1s1a	/	   ufs	rw		          1    1
/dev/ad1s1e	/tmp	   ufs	rw		          2    2
/dev/ad1s1f	/usr	   ufs	rw		          2    2
/dev/ad1s1d	/var	   ufs	rw		          2    2
/dev/acd0       /cdrom	   cd9660 ro,noauto	          0    0

 #fat
/dev/ad1s5        /mnt/ad1_dos5     msdos   rw,-Lru_RU.CP1251     0    0
 #ntfs
/dev/ad1s6        /mnt/ad1_ntfs3    ntfs    ro,-Ccp1251           0    0
 #ntfs
/dev/ad0s8        /mnt/ad0_ntfs     ntfs    ro,-Ccp1251           0    0 
 #fat (флэшка)
/dev/da0s1        /mnt/usb          msdos   rw,noauto,-Lru_RU.CP1251 0    0

Хочу обратить внимание на синтаксис в fstab. Разделители полей в файле fstab пробелы и табуляции. Все опции, типа ro, noauto и специфических ключей должны быть перечислены в одном поле Options, конечно, без пробелов.
   Вот и всё. Цель достигнута.



размещено: 2006-07-30,
последнее обновление: 2007-06-09,
автор: northern


Budy, 2006-10-11 в 15:22:31

Супер! Наконецто могу закончить свой веб-сервер!

DanGer, 2006-10-30 в 16:56:54

Наконец нашел эту статью, долго искал, но нашел...

yuriy, 2007-01-23 в 19:03:41

Спасибо за статью.

gyurza2000, 2007-02-04 в 13:05:22

нихрена не получается, при загрузке пишет что не может найти фонты, больше ничего прочитать не успеваю Smile В результате, при выводе любой псевдографики (sysinstall, mc) границы табличек рисуются кирилическими буквами а не линиями (Ё, Д и всякая белиберда). Вобщем, что доставить нужно? При установке фри выбирал Kernel Developer, ничего лишнего ставить не хотел, а теперь видимо не хватает чего то (фонтов например, может ещё чего). Хотя в /usr/share/locale/ есть и KOI-8 и CP-1251 и куча других

northern, 2007-02-05 в 20:37:33

Начни рыть с /etc/rc.conf. Сам пару дне трахался когда-то.

gyurza2000, 2007-02-07 в 1:03:22

Да что там рыть, пробовал я с ним разные акробатически еномера, всё по инструкциям, и всё равно описаная мною ранее фигня в результате :(

Andrey, 2007-02-15 в 5:48:37

Хотелось, чтобы текстовые документы, набранные в виндовсе, можно было смотреть и по возможности редактировать на фре и наоборот.
У ж сколько лет твердили миру — локаль это свойство процесса, а не системы!

Sidor, 2007-03-15 в 14:37:33

При использовании первого  способа.Все получилось, правда  теперь подсказки в MC похожи на белеберду.
Есть ли возможность подключать несколько кодировок

TR, 2007-03-31 в 1:33:27

"Пререгружаемся, смотрим результат."
Исправьте пожалуйста слово "Пререгружаемся"

DROOPY, 2007-04-03 в 10:55:59

тоже по первости были мысли превести локаль на cp1251, но впоследствии отказался - вся локализованная документация и прочее идет в кодировке KOI8-R, так что необходимо её приеобразование в cp1251.
Это дополнительная головная боль, т.к. при каждом обновлении локализованного софта это учитывать.
И ещё не всякая локализация использует ru_RU.KOI8-R, бывает что просто ru, подразумевая KOI8-R (случай с Midnight Commander), на cp1251 мы увидим коряки на экране :)

Duke, 2007-06-08 в 10:34:08

Во-первых, перепутаны ссылки на файлы
Во-вторых, так и не смог печатать по русски, KDE пишет ошибку установки кодировки

northern, 2007-06-09 в 14:08:16

to Duke.
>Во-первых, перепутаны ссылки на файлы

Спасибо, исправил.

kmb, 2007-10-25 в 15:28:39

DROOPY, да нет mc показывает нормально, кроме нижних подсказок.
p.s. Если кто Putty использует, не забудьте в его настройках выбрать cp1251 :)

void, 2007-11-13 в 23:44:07

А украинские іїє отображатся будут корректно?

VVD, 2008-03-21 в 5:00:21

scrnmap="win2cpp866"
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8

Никогда не понимал использования скринмапа, если есть шрифты сразу в нужной кодировке.
Почему не сделать так:
font8x16=cp1251-8x16
font8x14=cp1251-8x14
font8x8=cp1251-8x8

и без всяких там "scrnmap"-ов?

Хотя, IMHO, всё это от лукавого и жить надо под KOI8-R.
А кодировки менять не в системе, а в приложениях, которым это нужно.

anonymous, 2008-08-25 в 23:22:10

Для тех, кому интересно: Возникает вопрос, почему нельзя использовать напрямую шрифты ср1251, а надо перокодировать из ср866? Отвечаю: ср866 - кодировка, разработанная IBM в незапамятные времена, когда о графике и думать боялись и наряду со многими другими вшита в BIOS вместе со своими шрифтами. Основным отличием от ср1251 является то, что она ориентирована сугубо на текстовый режим работы дисплея, по сему имеет в своём распоряжении всякого рода псевдографику (ну например рамочки красивенные рисовать в MidnightCommander). СР1251 лишена этого в силу своей графической ориентированности. Поэтому любознательные могут попробавать написать следующее:
...
keymap=ru.cp1251
#keychange="61 ESC[K"
font8x16=cp1251-8x16
font8x14=cp1251-8x14
font8x8=cp1251-8x8
...
и посмотреть, что получиться. Во-первых шрифт на самом деле куда менее красивый, во вторых всякого рода рамочки уже не рисуются, и, самое главное, некоторые символы расцениваются как управляющие, из-за чего вообще не отображаются, либо отображаються с различными приколами. Ну как преимущество - возможность использования символов, отсутствующих в 866 и присутствующих в 1251. В основном же примере используется карта перекодировки из 1251 в 866, и вывод производиться уже 866-ми шрифтами и кодировкой... Недостаток: символы "ІіЎў№" да и многие другие вы увидите в виде крючков.

VVD, 2008-09-18 в 22:05:36

Где это вы нашли компьютер с встроенной в биос кодировкой 866?
Я вообще на 1251 не живу и никому не советую. А псевдографика и в KOI8 есть.

MEA, 2008-09-19 в 13:54:53

Встречный вопрос - а какой кодировкой пишет на экране свои сообщения биос?

MEA, 2008-09-19 в 13:56:38

Таблица симфолов 866 зашита в биос любой видеокарты.

VVD, 2008-09-19 в 19:29:26

437
"In a more strict sense, this character set was not born as a real code page (in its present sense) but being merely the graphical glyph repertoire available in the ROM of the IBM Monochrome Display Adapter (MDA) and Color Graphics Adapter (CGA) video output cards of the original IBM PC; that is, it was implemented on hardware. The expression "Original Equipment Manufacturer" (OEM) arises from this kind of fact. Today, is still the primary font in the core of any EGA and VGA compatible graphic card, i.e. the text you can see on screen when a PC reboots, before any other font can be loaded from a storage medium, is rendered with this code page." (c) http://en.wikipedia.org/wiki/Code_page_437

VVD, 2008-09-19 в 19:32:06

"Большинство современных видеоадаптеров ПК также содержат этот шрифт в ПЗУ. Хотя и были попытки «аппаратной русификации» компьютеров (например, на ЕС ПЭВМ), более популярной оказалась загрузка национальных шрифтов средствами операционной системы." (c) http://ru.wikipedia.org/wiki/CP437

MarvinFS, 2009-02-13 в 22:30:53

чего хотелось добиться:

чтобы в следующих штуках было всё по русски, в том числе в теле файлов:

1. через ssh в MC чтобы русские имена файлов были и можно было бы вводить и редактировать русский текст
2. в самбе эти же имена файлов точно так же бы показывались на виндовским машинах
3. через winscp когда с виндовской машины копируешь файлы на бздю и обратно чтобы имена файлов оставались по русски везде

rc.conf
## файлик скачен из инета по линкам найденым в гугле
keymap="ru.cp1251"

font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"

## мап файлик скачен из инета по линкам найденым в гугле
scrnmap="win2cpp866"

smb.conf

# Charset settings
display charset = CP1251
unix charset = CP1251
dos charset = cp866
#display charset = koi8-r
#unix charset = koi8-r
#dos charset = cp8661

настройки сессии putty (в регестри, либо в .reg файлик для portable версии)

"TerminalType"="xterm"
"Compression"=dword:00000001
"NoRemoteCharset"=dword:00000000
"LineCodePage"="Win1251 (Cyrillic)"
"CJKAmbigWide"=dword:00000000
"UTF8Override"=dword:00000001
"CapsLockCyr"=dword:00000000

apperience font подбирается по желанию, на мой взгляд это courier new.

с локализацией доков и прочей херни я не заморачивался ибо русский интерфейс изначально не приемлю и все доки читаю тока на аглицком...

удачи.

MarvinFS, 2009-02-13 в 22:33:03

да! в чистой консоли по прежнему имена файлов показываются как ???????? ???.txt
как побороть пока не придумал... т.е скрипты русские имена обрабатывать не будут... :( может кто подскажет в чем трабла...

в ttys стоят cons25r

VVD, 2009-02-16 в 5:53:23

Login class какой стоит у пользователя, под которым делаете ls?

yur0k_nik, 2009-02-18 в 21:02:53

Насколько я понял, кодовую страницу cp1251 автор внедрял для корректной работы ntfs разделов во фре. В плане этого нет никаких проблем при работе в koi8-r. В параметрах монтирования указывается параметр -C koi8-r, либо -C=koi8-r для указания в fstab'е. ntfs разделы видятся и русские имена корректно отображаются в кодировке koi8-r. А при экспериментах с локалью приходится выбирать либо корректную работу программ (особенно с псевдографикой), либо правильное отображение документов. IMHO локаль - не средство изменения кодировки в редакторах. Единственный серьёзный повод перестройки локали под работу в utf8 это работа с ntfs разделами через fusefs-ntfs. Русские имена этот модуль отображает только в utf8, но в отличие от штатного ядерного модуля позволяет запись на ntfs разделы.

VVD, 2009-02-19 в 20:41:50

Если что - имена файлов на ntfs разделах записаны не в CP1251, а в Unicode. Поэтому никакого толку от использования локали CP1251 в этом случае нет. Так же надо прописывать кодировку в опциях mount -C cp1251.

Мысли в слух: а как бы сделать локаль UTF8?... (именно для fusefs-ntfs; или же прикрутить перекодирование utf8=>koi8-r)

rage, 2009-05-24 в 21:13:36

Нижние подсказки в МС можно сделать русскими (CP1251) или нет?

Baneff, 2009-05-25 в 14:20:54

2 rage:

cd /usr/local/share/mc/
cp mc.hlp.ru mc.hlp.ru.orig
recode koi8-r..cp1251/ mc.hlp.ru
cp mc.hint.ru mc.hint.ru.orig
recode koi8-r..cp1251/ mc.hint.ru

adre, 2009-06-21 в 11:41:06

2VVD
неа не unicode, в cp1251 точно, можешь потестить: в kde3 в самом конквероре можешь кодировку отображения имен файлов поставить unicode либо cp и у видишь разницу... при монтировании как не странно koi8-r, в четверке, как не странно проикатывает и koi8-r, все зависит от того что ты используешь и для каких целей...

VVD, 2009-06-22 в 20:38:36

"NTFS allows any sequence of 16-bit values for name encoding (file names, stream names, index names, etc.). This means UTF-16 codepoints are supported, but the file system does not check whether a sequence is valid UTF-16 (it allows any sequence of short values, not restricted to those in the Unicode standard)." (c) http://en.wikipedia.org/wiki/NTFSrnrn"NTFS" ... "для задания имен файлов используется кодировка Юникод" (c) http://chernykh.net/content/view/942/1024/rnrnИ т.д. по гуглу.rnА kde показывает имена файлов уже после монтирования со всеми указанными преобразованиями.

leha, 2009-07-28 в 15:44:48

Спасибо за статью!
Попробовал все (описанное в статье) получилось, но снова прочитал - Цитирую: "Хотелось, чтобы текстовые документы, набранные в виндовсе, можно было смотреть и по возможности редактировать на фре и наоборот...."
и мне хотелось бы ...
пользуюсь mc и если локаль (за точность терминологии не ручаюсь - общаться не с кем, все сам, сам...) переделать на cp1251, то подсказки будут НЕЧИТАБЕЛЬНЫ (мелоч, может как-то и лечится, но хотелось как-то попроще сделать), короче после некоторых мытарств пришел к выводу:
= все таки "родная" локаль для FreeBSD - koi8-r
в общем сделал так
1. в mc F9 -> Команда -> Файл меню -> выбираем тот какой нравится (я начал с Локального, чтобы "разрушений" было поменьше в случае чего :))
2. добавил туда несколько строк типа
=================================
...
v       View text file (utf-8,cp866,cp1251) to koi8-r
   iconv -f UTF-8 -t KOI8-R %f 2> /err.f 1> /dev/null
   unset var1
   wc -c /err.f > /err.f1
   read var1 var2 < /err.f1
   if [ "$var1" = "0" ]; then
       echo "=$var1 ==$var2"
       echo "yes"
       iconv -f UTF-8 -t KOI8-R %f | less
   else
       echo "=$var1 ==$var2"
       echo "no"
       iconv -f CP866 -t KOI8-R %f 2> /err.f 1> /dev/null
       unset var1
       wc -c /err.f > /err.f1
       read var1 var2 < /err.f1
       if [ "$var1" = "0" ]; then
       iconv -f CP866 -t KOI8-R %f | less
       else
       iconv -f CP1251 -t KOI8-R %f | less
       fi
   fi
   rm /err.f
   rm /err.f1
=================================
теперь если нужно ПРОСМОТРЕТЬ файл из винды, а оттуда как правило в dos(cp866),win(cp1251) или unicode(utf-8) одировках, делаем так:
в mc выбрали нужный файл -> F2 (меню которое подправили) -> v (или какую Вы там букву-цифру на эту команду назначили)
в less смотрим файл для выхода из less -> q
Строго не судите, только начал осваивать, хотелось бы от гуру услышать их соображения по поводу...
Да, это только ПРОСМОТР, но наверное можно и редактор таким способом настроить...
Еще раз спасибо за статью, если бы ни она может до сих пор бы тупил - как, да что...
lyssar-е СПАСИБО за сайт - очень помогает!!!




leha, 2009-07-28 в 15:53:12

1. временные файлы конечно нужно где-то в другом месте создавать-удалять (может и без них можно, а как-то через конвейер)
2. echo конечно из кода убрать это для отладки делал, да не убрал...
3. может проверку на ошибку можно как-то короче и "правильнее" сделать - так подскажите...

торопился - старался сделать побыстрее - не до красоты было, а наверное как-то и подпрограмму можно было использовать, чтобы код был покороче

leha, 2009-07-28 в 16:06:03

Прошу, прощения, видел вверху вопросы по поводу названий файлов - посмотрите man mount_msdosfs mount_ntfs
а вот мой fstab
# Device        Mountpoint    FStype    Options        Dump    Pass#
/dev/ad1s1b        none        swap    sw        0    0
/dev/ad1s1a        /        ufs    rw        1    1
/dev/ad1s1e        /tmp        ufs    rw        2    2
/dev/ad1s1f        /usr        ufs    rw        2    2
/dev/ad1s1d        /var        ufs    rw        2    2
/dev/acd0        /cdrom        cd9660    ro,noauto    0    0
/dev/da0s1        /mnt/flash    msdosfs rw,noauto,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

флешка монтируется командой
mount /dev/da0s1
ntfs разделы тоже примерно так же только кажется вместо
-W и -L указывается -CKOI8-R....

Извините, за многословность...




Zerox, 2009-09-07 в 23:55:05

Подскажите, необходимо ли менять Class логина на russian, чтобы писать по-русски? Объясню, что я хочу. Хочу я всего лишь комментарии к скриптам своим писать по-русски, при этом мне не нужно что-либо еще в системе на русском языке, ни mc, ни консоль, ни даты, ничего не надо, все нужно на английском, но комментарии свои на русском. Но у меня не получается. Либо все русское и пишу по-русски, либо все английское и писать по-русски не могу.

leha, 2009-09-08 в 13:47:50

класс менять необязательно (но по-моему это удобнее - mc на русском, подсказки, меню и т.п.), но для того чтобы писать по русски надо
1). в rc.conf добавить
keymap=\\\"ru.koi8-ru\\\"
scrnmap=\\\"koi8-ru2cp866\\\"
2). в файле ttys заменить cons25 на cons25r
3). перезагрузиться
4). для переключения на русский (и обратно) нажать CapsLock
Удачи!

leha, 2009-09-08 в 13:49:47

3 слэша перед кавычками не надо - видимо редактор вставил сам...

Zerox, 2009-09-08 в 13:57:38

Вот ведь что странно. На серверах 6.3 у меня именно так и сделано и отлично получается писать по-русски. А вот на 7.2 не могу. Подключаюсь через putty.
В меню mc на русском не вижу ничего удобного, привык к английскому, еще и хот кеи некоторые не работают.

leha, 2009-09-10 в 6:35:07

Вчера ставил 7.1 - действительно, пока пользователю класс russian не поставишь не пишет по русски. Команда locale показывает "C", если класс поставить "ru.RU_KOI8-R"...
Прошу прощения...

Кэп очевидность, 2010-01-06 в 9:47:36

Перерегружаемся, смотрим результат.

оварищщи!, 2010-05-01 в 20:48:11

 Товарищщи!  Это поля для ввода комментариев к статье, а не для вопросов.  Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

Mikis, 2013-05-29 в 18:41:07

Может есть статья как распознать кириллицу, например  файлы .txt с винды закинуты на FreeBSD, надо сделать чтоб FreeBSD мог читать русский шрифт?

VVD, 2013-05-29 в 21:38:09

Mikis, речь о содержимом файлов или о названии?
Как закидывали: smb, ftp, sftp, scp, nfs, что-то своё?

BTW, уже года 2 как живу с локалью UTF-8 на всех инстансах FreeBSD.

Mikis, 2013-05-30 в 11:06:07

VVD, речь идет о содежимом в файлах

Mikis, 2013-05-30 в 12:23:54

VVD, через ftp

VVD, 2013-05-30 в 15:24:09

cat filename.txt | iconv -f cp1251 -t КОДИРОВКА_В_FreeBSD

Предполагаю, что кодировка файла с виндов cp1251 (но может быть ещё cp866, или даже UTF-8/UTF-16).
КОДИРОВКА_В_FreeBSD - "системная кодировка" - кодировка, указанная в настройках терминала (putty / xterm + ssh / konsole + ssh / gnome-terminal + ssh / и т.д.). У меня это UTF-8.

Список кодировок можно посмотреть командой iconv -l. Да и man iconv не мешало бы полистать. :-]

Mikis, 2013-06-04 в 16:00:37

VVD, может есть какая то инфа как это это сделать?

VVD, 2013-06-05 в 1:13:33

Что сделать?
Я всё написал.

MIX, 2018-04-06 в 11:23:44

очень помогает новичкам, когда в коментах не указывают где лежат файлы которые надо редактировать - это существенно расширяет кругозор, стимулирует применение поисковых систем и так далее...

в статье так же автор пошел по этому пути, когда сказал "ну а остальное вы потом сделаете какими-нибудь утилитами вписав их с какими то параметрами".

В остальном все неплохо. по крайней мере "направление" для поиска задано...



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1404 секунд
Из них PHP: 43%; SQL: 57%; Число SQL-запросов: 77 шт.
Исходный размер: 64445; Сжатая: 16078