iconv / mail
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 118
- ОС: Ubuntu
iconv / mail
Отправляю письма из командной строки с помощью утилиты mail, при этом одни почтовые программы автоматом распознают правильную кодировку, другие нет. Утилита iconv позволяет устанавливать нужную кодировку, но проблема в том, что я не знаю кодировку (или они разные), которую вписывают в -f, то есть начальную кодировку. Можно ли перекодировать весь текст в UTF-8, например, при этом не указав начальную кодировку?
-
- Сообщения: 954
- ОС: [K]Ubuntu, Debian
Re: iconv / mail
Можно, с помощью enconv
-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
Re: iconv / mail
Две утилиты в одном и том же пакете:
enca - автоопределение кодировки, дальше перекодируйте чем хотите.
enconv - автоопределение кодировки и автоматическое перекодирование. Осторожно: если указать файл как параметр командной строки, то он будет перекодирован на месте и, если кодировка определилась неправильно, может превратиться в нечто ещё более неудобоваримое. Так что лучше передавайте данные через пайп.
enca - автоопределение кодировки, дальше перекодируйте чем хотите.
enconv - автоопределение кодировки и автоматическое перекодирование. Осторожно: если указать файл как параметр командной строки, то он будет перекодирован на месте и, если кодировка определилась неправильно, может превратиться в нечто ещё более неудобоваримое. Так что лучше передавайте данные через пайп.
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: iconv / mail
Когда-то у econv-а была ещё одна проблема: некоторые комбинации символов кириллицы "бились" при перекодировании между юникодом и восьмибитными кодировками. Есть ли она сейчас, не знаю. Но полезности enca это в любом случае не отменяет.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: iconv / mail
lgar
если ваш /usr/bin/mail понимает опцию "-a" (добавить строку в заголовок), как умеет bsd-mailx, то можете воспользоваться таким скриптом:
использовать можно как и /usr/bin/mail:
$ echo тест | iconv -t cp1251 | ./this-script -s "сабжект письма" re@ciev.er
современными mua полученное письмо должно нормально отображаться·
если ваш /usr/bin/mail понимает опцию "-a" (добавить строку в заголовок), как умеет bsd-mailx, то можете воспользоваться таким скриптом:
Код: Выделить всё
#!/bin/bash
usage() {
echo $1 >&2
exit 1
}
m=/usr/bin/mail
e=/usr/bin/enca
[ -x ${m} ] || usage "${m} not found"
[ -x ${e} ] || usage "${e} not found"
f=$(tempfile)
cat - >${f}
cat ${f} | ${m} -a "MIME-Version: 1.0" -a \
"Content-Type: text/plain; charset=$(enca -L ru -m ${f})" -a \
"Content-Disposition: inline" -a \
"Content-Transfer-Encoding: 8bit" -a \
"User-Agent: ${m}" $@
rm ${f}
использовать можно как и /usr/bin/mail:
$ echo тест | iconv -t cp1251 | ./this-script -s "сабжект письма" re@ciev.er
современными mua полученное письмо должно нормально отображаться·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог