Печать файлов в UTF8, из командной строки

Главная Форумы POWER Systems AIX/Hardware Печать файлов в UTF8, из командной строки

Просмотр 12 веток ответов
  • Автор
    Сообщения
    • #13324
      burn
      Участник

      Здравствуйте!

      Не могу победить печать файлов с русскими символами из командной строки (например lp -dhpq1 1.txt)

      Печатаются закорючки. Хотя в настройках принтера стоит печать UTF8. + не могу набивать в консоли UTF8.

      Пакеты ru_RU.UTF-8 установлены, но при смене переменной окружения на LC_LANG=ru_RU, руссифицируется все, включая smitty, а мне только необходима возможность набора русских символов из консоли и печать через lp -d.

      Помогите пожалуйста.

    • #13326
      Alex
      Участник

      Много вопросов возникает.

      что даёт вывод
      locale
      locale -a | grep ru

      что выступает консолью в данном случае?

      из телепатического опыта. вот так работает?

      # LC_ALL=ru_RU.UTF-8 lp … myfile

    • #13330
      burn
      Участник

      #locale -a
      C
      POSIX
      RU_RU.UTF-8
      RU_RU
      en_US.8859-15
      en_US.ISO8859-1
      en_US
      ru_RU.ISO8859-5
      ru_RU

      #locale
      LANG=en_US
      LC_COLLATE=RU_RU.UTF-8
      LC_CTYPE=RU_RU.UTF-8
      LC_MONETARY=”en_US”
      LC_NUMERIC=”en_US”
      LC_TIME=”en_US”
      LC_MESSAGES=”en_US”
      LC_ALL=

      Консолью выступает putty по ssh. С установленной кодировкой UTF8.
      Не могу вводить нормально символы кириллицы в vi или mcedit.

    • #13336
      Alex
      Участник

      Просто выставьте LANG в EN_US.UTF-8. Дефолтное en_US указывает на ISO-шную однобайтную кодировку.

    • #13340
      burn
      Участник

      Печатал файл с содержимым:
      АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

      Команда #LC_ALL=ru_RU.UTF-8 lp -dPRT419K 1.txt

      Напечаталось:

      А_ВГ_ЕЁ_____МНО_РСТ_ФХ__________

      Принтер hp lj 4015dn
      Драйвер hp laserjet4+

    • #13344
      andrewk
      Участник

      я не специалист в системе аиксовой печати, но я совсем не понимаю, зачем перед lp задавать переменную LC_ALL. Все, что делает lp afair – ставит в очередь очередное задание. Вы можете хоть китайский язык задать для lp, но если у Вас lpd не знает русского языка, то и печатать по-русски он не будет. А у Вас LANG установлен в однобайтовую кодировку. Вам imho совершенно верно посоветовали выставить LANG в en_US.UTF-8, после чего надо рестартовать сервисы, ответственные за печать и проверить после рестарта, правильно ли установлена переменная LANG для этих процессов (ps ewww), после чего попробовать распечатать файл еще раз.

    • #13347
      Alex
      Участник

      Я тоже не специалист и предложил исключительно из логики 😉

      Смотри – концепция выставления локали _принт-серверу_ – она несколько порочна, не находишь? Это что же, если у меня в компании работают люди с разными локалями – для каждого свой принт-сервер подымать? Неэнтерпрайзненько. А вот сделать так, чтобы lp сам конвертировал файл – это ещё куда ни шло. Открыл ман – и действительно, я ошибся по факту, но мыслил верно – есть у lp ключ -L:

      -L locale-name
      Specify locale-name as the locale to use with this print request. By default, locale-name is set to the value of LC_CTYPE. If LC_CTYPE is not set,
      locale-name defaults to the C locale.

      Правда, почему default здесь C, а не текущая локаль пользователя – для меня загадка.

    • #13348
      andrewk
      Участник

      логика в этом есть, но в моем мане нет этой опции -L, а по моему нескромному мнению преобразованиями в системе печати занимаются фильтры, которые (по идее) и должны перевести обычный юникод-текст в постскрипт и скормить его драйверу принтера. Фильтры вызываются lpd, а поэтому унаследуют его окружение. Но мне к счастью ничего печатать не надо, а поэтому рассуждения чисто теоретические. А вообще на это тему где-то когда-то был редбук – http://www.redbooks.ibm.com/abstracts/sg246018.html?Open

    • #13349
      burn
      Участник

      Локаль выставил, но напечаталось так же, половина _ вместо букв. Ключ -L это для подсистемы SystemV, у меня подсистема AIX.

    • #13352
      Alex
      Участник

      А файл точно в UTF8 кодировке? не могли ошибку где-нибудь допустить?

      Я не могу объяснить, как utf-8 может так криво напечататься. вот если бы всё превратилось в кашу из закорючек, да ещё результирующая строка была другого размера – понял бы. А вот чтобы так – не понимаю.

    • #13353
      burn
      Участник

      Файл точно в UTF-8.

      Не знаю что еще добавить, не выходит ничего 🙁 Ни PCL, ни PS… 🙁

    • #13354
      burn
      Участник

      А что если попробовать использовать команду qprt и флаг -X или -F для использования шрифтов X11?

    • #13883
      Andrey
      Участник

      Столкнулся с аналогичной проблемой.
      Удалось ли вам найти причину?

Просмотр 12 веток ответов
  • Для ответа в этой теме необходимо авторизоваться.