nixp.ru v3.0

18 октября 2017,
среда,
21:44:41 MSK

DevOps с компанией «Флант»
dmitriy_ написал 24 ноября 2007 года в 16:04 (890 просмотров) Ведет себя неопределенно; открыл 24 темы в форуме, оставил 63 комментария на сайте.

FreeBSD 6.2, samba-3.0.23c_2,1, KDE-3.5.4

#locale

LANG=ru_RU.CP1251

LC_CTYPE=«ru_RU.CP1251»

LC_COLLATE=«ru_RU.CP1251»

LC_TIME=«ru_RU.CP1251»

LC_NUMERIC=«ru_RU.CP1251»

LC_MONETARY=«ru_RU.CP1251»

LC_MESSAGES=«ru_RU.CP1251»

LC_ALL=

#smb.conf

# Charset settings

display charset = CP1251

unix charset = CP1251

dos charset = CP866

Суть в следующем. Захожу через самбу в расшаренную папку другого компа-WinXP, но вместо русских букв получаю квадратики.

Если с компа-WinXP зайти в мою расшаренную папку, то все русские буквы читабельны.

На сколько я понимаю опция «display charset» означает кодировку в которой самба показывает свои файлики другим клиентам. С этой опцие проблем нет.

Опция «dos charset» точно не знаю что означает, но наверное она нужна для работы с досовскими клиентами. Это не наш случай.

И опция «unix charset» это моя локаль.

Где я ошибся? Что я не учел?

rgo

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

а вот настроек клиента, которым ты «заходишь» я не вижу.

dmitriy_

Во как! А где же клиент настраивается?

В man smbconf сказано что клиент берет некоторые настройки из smb.conf

Heavy

Где-то это уже поднималось.

Я для лечения этого содавал /home/user/.smb/smb.conf c кодировками:

unix charset = utf8

display charset = utf8

dos charset = cp866

rgo
dmitriy_
Во как! А где же клиент настраивается?

В man smbconf сказано что клиент берет некоторые настройки из smb.conf

а какого клиента ты используешь? того который smbclient? будем считать, что я угадал…

заглянул я в свой smb.conf… пожалуй у тебя ошибка в том, надо писать не CP866, а просто 866. Насчёт CP1251 — не скажу, никогда её не использовал, мне кажется что её так и надо писать, но если не заработает с `dos charset = 866\′ ты попробуй ещё и `unix charset = 1251\′.

Dmitry.Stolyarov

Так!

Как только собираемся использовать «гетерогенное» окружение.. Забываем про однобайтные кодировки. То есть cp1251,koi8r и пр — уходят в историю сразу. Используем utf8!!!

Почему так… А потому, что даже окошки используют «по умолчанию» с SMB/CIFS протоколом — utf8.

Набор рекомендаций:

* настраиваем NLS в файловых системах, дефолтной кодировкой — utf8;

* переводим locale — полностью на ru_RU.UTF-8;

* радуемся;

А теперь, что касается сути вопроса :)…

Если под «Захожу через самбу в расшаренную папку другого компа-WinXP» — имеется ввиду smbclient… То можно его запустить например так:

$ LANG="ru_RU.UTF-8" smbclient ...


Правда для этого может понадобиться поддержка этой locale glibc… И поддержка шрифтов… И вообще — это оч плохой способ :)!!!!

Если речь идет о монтировании папок… То в опциях монтирования — меняем iocharset…

Если речь идет о GUI программке… Смотрим настройки программки.

P.S. Я FreeBSD, как и KDE видел только на картинке… Чего и вам рекомендую :).

dmitriy_

По порядку.

Heavy, на мандриве с локалью utf8 я так и делал. Все пучком. Но на бсд у меня локаль 1251.

rgo, на всякий случай попробовал писать 1251 и 866. Тот же результат. К тому же во всех документациях пишется именно CP1251 и CP866.

Dmitry.Stolyarov, я бы рад перейти на локаль utf8, но FreeBSD на сегодняшний день не позволяет перевести консоль на мультибайтную кодировку. Только иксы. Этого не достаточно. Я же бывает и в консоли работаю, и скрипты запускаю, в частности архивацию файликов с русскими буковками в именах.

dmitriy_

На мандриву возвращаться не хочется, полюбилась мне фря

Dmitry.Stolyarov

> На мандриву возвращаться не хочется, полюбилась мне фря

Так это… Может стоит попробовать gentoo? Раз полюбились портежи :) ?

Heavy

>Heavy, на мандриве с локалью utf8 я так и делал. Все пучком. Но на бсд у меня локаль 1251.

А пробовал изменять utf8 на cp1251?

Anarchist
dmitriy_
На мандриву возвращаться не хочется, полюбилась мне фря

Если б она тебе действительно полюбилась, ты бы не стал так издеваться над ней (ставить системную локаль СР1251).

Столярова не слушай: он гонит откровенную дезу и вкусовщину!

UTF8 идёт лесом (почему — тема отдельного обсуждения в флейме)!!!

Системная локаль никакого отношения к отображаемой Самбой (кстати, какой версии?) не имеет!

У меня на FreeBSD 6.2 с системной локалью KOI8-R и реальным зоопарком на клиентской стороне всё что нужно работает с следующими стоками определяющими кодировку: smb.conf

client code page = cp1251
unix char set = koi8-r
Anarchist
Dmitry.Stolyarov
Так!

Как только собираемся использовать «гетерогенное» окружение.. Забываем про однобайтные кодировки. То есть cp1251,koi8r и пр — уходят в историю сразу. Используем utf8!!!

Почему так… А потому, что даже окошки используют «по умолчанию» с SMB/CIFS протоколом — utf8.

Ну не сказочник?!.

Предлагаю продемонстрировать истинность этого утверждения в действительности:

1. Тебе запрещается использовать указание однобайтных кодировок в конфиге Самбы!

2. Действительно зоопарк: т.е. начиная с вынь-95 и до высты.

Мне бы доставило немалое удовольствие зрелище просмотра в данном случае созданного системными средствами файла с русским названием из вынь-98… :)

dmitriy_

при монтировании использую вот такую строчку в fstab

//guest@COMP/MEDIA      /usr/home/user/media      smbfs      ro,noauto,-I192.168.170.3,-Ecp1251:cp866,-N 0 0

тогда русские буквы читаются