cat покидает UTF -только 8 BOM

Оказывается, в моей сборке (Debian Buster )этот /tmp не устанавливался автоматически как tmpfs. Поэтому я включил монтирование tmp в systemd следующим образом:

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount

И для journalctl, и для разрешения требуется доступ на запись к /tmp

1
07.10.2020, 12:35
1 ответ

Для одного файла достаточно удалить UTF -8 "BOM":

iconv -f utf-8 -t utf-16le INFILE |
iconv -f utf-16 -t utf-8 > OUTFILE

Но iconv обрабатывает все свои входные файлы как один «поток», поэтому вам следует делать это в цикле, если вы хотите объединить несколько файлов:

for f in FILELIST; do
  iconv -f utf-8 -t utf-16le "$f" | iconv -f utf-16 -t utf-8
done > OUTFILE

Если вы действительно хотите добавить UTF -8 "BOM" обратно в (, что является DUMB , и я абсолютно не рекомендую):

for f in FILELIST; do
  iconv -f utf-8 -t utf-16le "$f" | iconv -f utf-16 -t utf-8
done |
iconv -f utf-8 -t utf16 | iconv -f utf-16le -t utf-8 > OUTFILE

Но вы не должны зацикливаться на удалении этого символа "лягушка" в первую очередь. Просто оставьте это там и научитесь с этим жить. U+FEFFне является недопустимым, когда находится в середине файла,и в Unicode есть много специальных меток и других невидимых символов (, которые "не будут отображаться в vi m " ); вы никогда не сможете предположить, что файл Unicode — это то, что отображается на экране.

Для исходного файла, например. скрипты #! /she/bang, для их создания следует использовать что-то другое, кроме Блокнота;-)

2
18.03.2021, 22:59

Теги

Похожие вопросы