Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Samba и кодировка.  (Прочитано 7882 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн el5fuego

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Samba и кодировка.
« : 11 Апреля 2013, 23:59:32 »
Здравствуйте!
Подскажите пожалуйста с настройкой Samba - точнее с кодировками. На Samba расшерено несколько папок и в каждой папке есть файлы и другие папки с русскими именами. Для удобства назовем нужные папки "П1" и "П2". Изначально как Samba была запущена первый раз, при доступе с других систем файлы и папки с русскими именами отображались в П1 - "______.doc" например, в папке П2 - "Физика". В интернете я нашел, чтобы исправить отображение имен в первой папке (П1) нужно в глобальных настройках добавить записи: unix charset = cp1251; display charset = cp1251. Записи добавлены, сохранены и сервис перезапущен. В итоге в папке "П1" русские имена нормально стали отображаться, а в папке "П2" стали такого вида - физика.

В онлайн декодере показывает физика = Физика, а ниже пишет - "как нам пришлось помучиться" - CP1251 → UTF-8. Тобишь получается, что в папке "П2" кодировка имен файлов CP1251, а отображаться не хочет.

Если кратко, то получается: 
при записи - unix charset = cp1251; display charset = cp1251 - папка П1 отображается нормально, П2 - плохо.
если не использовать запись - unix charset = cp1251; display charset = cp1251 - папка П1 отображается ненормально, П2 - хорошо.

Подскажите пожалуйста как решить такую проблемму? Спасибо.
« Последнее редактирование: 12 Апреля 2013, 23:58:34 от el5fuego »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #1 : 12 Апреля 2013, 01:00:30 »
Уберите, пожалуйста, украшательства из вашего поста - читать невозможно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн el5fuego

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #2 : 13 Апреля 2013, 14:10:00 »
Уберите, пожалуйста, украшательства из вашего поста - читать невозможно.
Убрал!

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #3 : 13 Апреля 2013, 17:33:06 »
А может всё-таки так?
unix charset = utf8
display charset = cp1251

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #4 : 13 Апреля 2013, 17:50:09 »
Вы, когда в интернетах ответы искали, голову к найденным ответам приложить забыли.
$ man smb.conf | grep -A3 charset
       display charset (G)
          Specifies  the charset that samba will use to print messages to std‐
          out and stderr. The default value is "LOCALE", which means automati‐
          cally  set, depending on the current locale. The value should gener‐
          ally be the same as the value of the parameter unix charset.

          Default: display charset = "LOCALE" or  "ASCII"  (depending  on  the
          system)

          Example: display charset = UTF8

       dos charset (G)
          DOS SMB clients assume the server has the same charset as  they  do.
          This  option  specifies  which  charset  Samba  should  talk  to DOS
          clients.

          The default depends on which  charsets  you  have  installed.  Samba
          tries  to  use charset 850 but falls back to ASCII in case it is not
          available. Run testparm(1) to check the default on your system.

          No default

          unix charset (G)
             Specifies the charset the unix machine Samba runs on uses.  Samba
             needs  to  know  this  in order to be able to convert text to the
             charsets other SMB clients use.

             This is also the charset Samba will use when specifying arguments
             to scripts that it invokes.

             Default: unix charset = UTF8

             Example: unix charset = ASCII

Проще говоря,
1. "display charset" никакого отношения к вашей проблеме не имеет.
2. "dos charset" никакого отношения к вашему случаю не имеет (скорее всего), так как у вас вряд ли есть DOS клиенты. Если всё таки есть, он должен быть выставлен в 866.
3. "unix charset" по умолчанию в Ubuntu всегда utf8. Если при этом у вас файлы не читаются - вам нужно сконвертировать имена файлов на диске, чтобы они соответствовали системной кодировке. Для этого есть специальные утилиты.
Либо, как вариант, убрать все расшаренные каталоги кроме одного проблемного, выставить unix charset так, чтобы имена читались нормально, скопировать содержимое на другой компьютер, вернуть все установки назад и вернуть содержимое в папку, уже с именами в нормальной кодировке.

P.S.
Такие проблемы чаще всего возникают при использовании криво настроенных FTP клиентов для заливки файлов с не-ASCII именами.
« Последнее редактирование: 14 Апреля 2013, 03:41:22 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн el5fuego

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #5 : 14 Апреля 2013, 19:46:08 »
Вы, когда в интернетах ответы искали, голову к найденным ответам приложить забыли.
$ man smb.conf | grep -A3 charset
       display charset (G)
          Specifies  the charset that samba will use to print messages to std‐
          out and stderr. The default value is "LOCALE", which means automati‐
          cally  set, depending on the current locale. The value should gener‐
          ally be the same as the value of the parameter unix charset.

          Default: display charset = "LOCALE" or  "ASCII"  (depending  on  the
          system)

          Example: display charset = UTF8

       dos charset (G)
          DOS SMB clients assume the server has the same charset as  they  do.
          This  option  specifies  which  charset  Samba  should  talk  to DOS
          clients.

          The default depends on which  charsets  you  have  installed.  Samba
          tries  to  use charset 850 but falls back to ASCII in case it is not
          available. Run testparm(1) to check the default on your system.

          No default

          unix charset (G)
             Specifies the charset the unix machine Samba runs on uses.  Samba
             needs  to  know  this  in order to be able to convert text to the
             charsets other SMB clients use.

             This is also the charset Samba will use when specifying arguments
             to scripts that it invokes.

             Default: unix charset = UTF8

             Example: unix charset = ASCII

Проще говоря,
1. "display charset" никакого отношения к вашей проблеме не имеет.
2. "dos charset" никакого отношения к вашему случаю не имеет (скорее всего), так как у вас вряд ли есть DOS клиенты. Если всё таки есть, он должен быть выставлен в 866.
3. "unix charset" по умолчанию в Ubuntu всегда utf8. Если при этом у вас файлы не читаются - вам нужно сконвертировать имена файлов на диске, чтобы они соответствовали системной кодировке. Для этого есть специальные утилиты.
Либо, как вариант, убрать все расшаренные каталоги кроме одного проблемного, выставить unix charset так, чтобы имена читались нормально, скопировать содержимое на другой компьютер, вернуть все установки назад и вернуть содержимое в папку, уже с именами в нормальной кодировке.

P.S.
Такие проблемы чаще всего возникают при использовании криво настроенных FTP клиентов для заливки файлов с не-ASCII именами.

Спасибо! Проблемма частично была решена перекодированием имен файлов.
Воспользовался утилитой convmv!
Комманда convmv -r -f cp1251 -t utf-8 --notest Folder/

В интернете нашел еще такое:
convmv – утилита, которая применяется для изменения кодировки файлов при смене системной кодировки.
Список доступных кодировок
convmv --list

Изменение кодировки

convmv -r --notest -f ENC_FROM -t ENC_TO DIR

где:

    ENC_FROM – исходная кодировка (cp1251, koi8-r)
    ENC_TO – новая кодировка (utf8)
    DIR – рабочий каталог
    -r – работать рекурсивно
    --notest – начать перекодировку имен файлов без запроса подтверждения

Замечу, что песле первыой комманды (convmv -r -f cp1251 -t utf-8 --notest Folder/), комманда вида convmv -r --notest -f ENC_FROM -t ENC_TO DIR сказала, что неизвестна кодировка ENC_FROM.
В итоге:
комманда - convmv -r -f cp1251 -t utf-8 --notest Folder/ - все имена переконвертировала;
в браузере поменялись крякозябры;
вручную перебил имена файлов (благо их было не много)

Всем спасибо! :-)

Оффлайн overmaxx

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #6 : 01 Июня 2013, 17:31:17 »
Может и мне поможите?
каким образом нужно настроить локаль, самба сервер и параметры монтирования шары, что бы я имел возможность редактировать файлы с русскими названиями и русским текстом внутри и из консоли, и из под клиентов виндовых???
сейчас написанное в убунте не читается из под винды и наоборот
Спасибо

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Samba и кодировка.
« Ответ #7 : 01 Июня 2013, 17:52:29 »
Создайте свой новый топик и приложите вывод команды
locale ; testparm -s
И в следующий раз внимательнее читайте правила форума.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.