Dosyanızı dönüştürürken, bayt sırası işareti içerdiğinden emin olmalısınız. Olsa standart bayt sırası işareti UTF-8 için tavsiye edilmez diyor , bir bayt sırası işareti olmadan UTF-8 ve ASCII arasında meşru hercümercler olabilir .
Ek olarak, bayt sıralı bir işaret belirtmek UTF-16BEveya hazırlamamaktadır , bu yüzden ilk önce platforma bağlı bir endianness kullanan dönüştürmeye başladım . Sonra, asıl endikliği ve ondan dönüşüme belirlemek için kullanıyorum .UTF-16LE UTF-16fileUTF-16LE
Eğer kullanarak dosya oluşturmak Son olarak, bashdosya aldığı bash'ın locale charmapbu aralarından haritasına gerekenler nedenle, kodlamayı.
(Tüm kodlamalarımı büyük harflerle yazarım çünkü tüm iconvdesteklenen kodlamaları iconv -ltümüyle büyük harflerle yazıyorsunuz .)
BASH_ENCODING="$( locale charmap | tr [:lower:] [:upper:] )"
echo $var | iconv -f "$BASH_ENCODING" -t UTF-16 > UTF-16-UNKNOWN-ENDIANNESS-FILE
FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNOWN-ENDIANNESS-FILE )"
iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNOWN-ENDIANNESS-FILE > file2.txt