Samba и кривая кодировка

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
nesferato
Сообщения: 472
Статус: В изобилии!
ОС: Fedora, Slackware

Samba и кривая кодировка

Сообщение nesferato »

Добрый день всем! Подозреваю что данная тема уже поднималась, прошу меня извинить, если повтор, но не нашел ответа...
Итак. Есть Slackware, создаем файл с русским именем и содержанием.
Когда захожу на шару из-под Windows, имя файла отображается нормально, а вот содержание - кракозябры.
Можно ли заставить нормально отображаться содержимое файла?

--------------------система---------------------------
Локаль - koi8-r
Samba версии 3.0.20. В smb.conf прописано:
display charset = KOI8-R
unix charset = KOI8-R
dos charset = CP866
Ядро 2.6.15.4. Вот строки из .config, что касается SMB, кодировок и NLS:
CONFIG_SMB_FS=m
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp866"

CONFIG_NLS=y
CONFIG_NLS_DEFAULT="koi8-r"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_866=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_UTF8=m

Упс... Кажется нашёл, где почитать. Но все равно был бы признателе на ссыдки :)
Результат пропорционален осознанности.
Спасибо сказали:
Аватара пользователя
nesferato
Сообщения: 472
Статус: В изобилии!
ОС: Fedora, Slackware

Re: Samba и кривая кодировка

Сообщение nesferato »

Почитав и поразмыслив пришёл к выводу, что прямо в лоб проблему не решить. Поправьте меня, если я не прав... Файл создаётся в кодировке koi8-r, соответственно, при обрашении к нему с Windows будем видеть содержание тоже в koi8-r. Я скомпилил GNU Recode и им перекодирую файл, который надо будет просматривать с Windows (имеется ввиду обычный текстовый файл).
Результат пропорционален осознанности.
Спасибо сказали:
Аватара пользователя
BigKAA
Сообщения: 292

Re: Samba и кривая кодировка

Сообщение BigKAA »

nesferato писал(а):
14.02.2006 15:06
Почитав и поразмыслив пришёл к выводу, что прямо в лоб проблему не решить. Поправьте меня, если я не прав... Файл создаётся в кодировке koi8-r, соответственно, при обрашении к нему с Windows будем видеть содержание тоже в koi8-r. Я скомпилил GNU Recode и им перекодирую файл, который надо будет просматривать с Windows (имеется ввиду обычный текстовый файл).


типа того. осталось это recode к самбе прикрутить. как? не знаю.
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали:
Аватара пользователя
alastor
Сообщения: 844
Статус: ARCH'еноид
ОС: Arch Linux current

Re: Samba и кривая кодировка

Сообщение alastor »

Ну тут Самба не причем - дело-то как видно в кодировке файла. Выход - создавать файл в Виндовозной кодировке (cp1251), или перекодировать уже существующий (какой-нить прогой типа iconv)
Спасибо сказали:
Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: Samba и кривая кодировка

Сообщение TuLiss »

alastor писал(а):
14.02.2006 22:55
Ну тут Самба не причем - дело-то как видно в кодировке файла. Выход - создавать файл в Виндовозной кодировке (cp1251), или перекодировать уже существующий (какой-нить прогой типа iconv)

Совершенно верно.
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
Аватара пользователя
nesferato
Сообщения: 472
Статус: В изобилии!
ОС: Fedora, Slackware

Re: Samba и кривая кодировка

Сообщение nesferato »

Да я уже понял... Всем Спасибо!
Интересно, а реально ли на bash написать скрипт, который, как только на шару поступает файл, проверяет его кодировку, и если она koi8-r, то вызывается тот же GNU Recode, который превращает её в cp1251? :)
Или не стоит заморачиваться, так как перекодировка, как я понял, требуется только для чисто текстовых файлов?
Результат пропорционален осознанности.
Спасибо сказали:
Аватара пользователя
vg2.0
Сообщения: 832
Статус: *BSD admin ;)
ОС: *BSD =)

Re: Samba и кривая кодировка

Сообщение vg2.0 »

10.14. Как преобразовать текстовые файлы DOS в формат UNIX®?

Воспользуйтесь следующей командой с использованием perl:

% perl -i.bak -npe 's/\r\n/\n/g' file ...
где file - это имя файла(ов) для преобразования. Преобразование делается в том же самом файле, оригинальные файлы сохраняются с расширением .bak.

Это преобразование также можно выполнить с помощью команды tr(1):

% tr -d '\r' < dos-text-file > unix-file
где dos-text-file - это имя файла, содержащего текст DOS, а в файл unix-file будет помещён уже преобразованный текст. Этот способ может работать гораздо быстрее, чем при использовании perl.

© Взято из handbook'а FreeBSD.
FreeBSD 6-stable
FreeBSD 5.5-stable
Спасибо сказали:
Аватара пользователя
BigKAA
Сообщения: 292

Re: Samba и кривая кодировка

Сообщение BigKAA »

vg2.0 писал(а):
15.02.2006 16:42
10.14. Как преобразовать текстовые файлы DOS в формат UNIX®?

Воспользуйтесь следующей командой с использованием perl:

% perl -i.bak -npe 's/\r\n/\n/g' file ...
где file - это имя файла(ов) для преобразования. Преобразование делается в том же самом файле, оригинальные файлы сохраняются с расширением .bak.

Это преобразование также можно выполнить с помощью команды tr(1):

% tr -d '\r' < dos-text-file > unix-file
где dos-text-file - это имя файла, содержащего текст DOS, а в файл unix-file будет помещён уже преобразованный текст. Этот способ может работать гораздо быстрее, чем при использовании perl.

© Взято из handbook'а FreeBSD.


На сколько я понял интересует не просто преобразование окончания строки. Интересует конвертация из одной кодовой страницы в другую. Это можно сделать при помощи iconv или того же tr. Вопрос в другом, как это сделать "на лету", т.е. прикрутить к Самбе, что бы она на Линукс хранила содержимое в КОИ8-Р, а виндам отдавала уже сконвертиованный в 1251 файл.
Удачи, Артур Крюков
--
CentOS 5.x | Fedora Core
Home милый wikihome и мой блог
Спасибо сказали: