เมื่อแปลงไฟล์ของคุณคุณควรตรวจสอบให้แน่ใจว่ามีเครื่องหมายคำสั่งซื้อแบบไบต์ แม้ว่ามาตรฐานกล่าวว่าสั่งไบต์เครื่องหมายไม่แนะนำสำหรับ UTF-8 , อาจมีความสับสนที่ถูกต้องระหว่าง UTF-8 และ ASCII โดยไม่ต้องมีเครื่องหมายสั่งไบต์
นอกจากนี้การระบุUTF-16BE
หรือUTF-16LE
ไม่เติมเครื่องหมายคำสั่งซื้อแบบไบต์ดังนั้นฉันจึงแปลงเป็นครั้งแรกUTF-16
ซึ่งใช้ endianness ที่ขึ้นอยู่กับแพลตฟอร์ม จากนั้นผมใช้file
ในการกำหนด endianness UTF-16LE
เกิดขึ้นจริงและแปลงจากนั้นไปยัง
ในที่สุดเมื่อคุณสร้างไฟล์โดยใช้bash
ไฟล์ที่ได้รับbash
ของlocale charmap
การเข้ารหัสเพื่อให้เป็นสิ่งที่คุณต้องทำแผนที่จาก
(ฉันเป็นตัวพิมพ์ใหญ่การเข้ารหัสทั้งหมดของฉันเพราะเมื่อคุณแสดงรายการiconv
การเข้ารหัสที่สนับสนุนทั้งหมดด้วยiconv -l
พวกเขาจะเป็นตัวพิมพ์ใหญ่ทั้งหมด)
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