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-16BE
veya 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-16
file
UTF-16LE
Eğer kullanarak dosya oluşturmak Son olarak, bash
dosya aldığı bash
'ın locale charmap
bu aralarından haritasına gerekenler nedenle, kodlamayı.
(Tüm kodlamalarımı büyük harflerle yazarım çünkü tüm iconv
desteklenen kodlamaları iconv -l
tü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