Shell 如果文件编码为utf-16le,则获取垃圾字符
对于编码为utf-16le的csv文件。当我试图读取csv的数据时,它给了我垃圾字符 要获得文件编码,我使用下面的命令Shell 如果文件编码为utf-16le,则获取垃圾字符,shell,ubuntu,awk,sed,Shell,Ubuntu,Awk,Sed,对于编码为utf-16le的csv文件。当我试图读取csv的数据时,它给了我垃圾字符 要获得文件编码,我使用下面的命令 file -bi test.csv head -n1 test.csv | tr '^' ',' 它给了我文本/纯文本;字符集=utf-16le 要读取文件数据,我使用下面的命令 file -bi test.csv head -n1 test.csv | tr '^' ',' 它给了我��冒号1,冒号2,冒号3 为什么它会给我垃圾charchater由于csv文件是
file -bi test.csv
head -n1 test.csv | tr '^' ','
它给了我文本/纯文本;字符集=utf-16le
要读取文件数据,我使用下面的命令
file -bi test.csv
head -n1 test.csv | tr '^' ','
它给了我��冒号1,冒号2,冒号3
为什么它会给我垃圾charchater由于csv文件是用UTF-16LE编码的,文件以BOM开头 (字节顺序标记),0xff和0xfe。您可以将其标识为:
head -n1 test.csv | xxd
UTF-8现在是最常用的,而UTF-16的使用越来越少(包括Windows)。
您的区域设置也将默认为UTF-8。因此,请尝试:
iconv -f UTF-16LE -t UTF-8 test.csv | head -n1 | tr '^' ','
将csv文件转换为UTF-8编码。由于csv文件使用UTF-16LE编码,因此该文件以BOM表开始 (字节顺序标记),0xff和0xfe。您可以将其标识为:
head -n1 test.csv | xxd
UTF-8现在是最常用的,而UTF-16的使用越来越少(包括Windows)。
您的区域设置也将默认为UTF-8。因此,请尝试:
iconv -f UTF-16LE -t UTF-8 test.csv | head -n1 | tr '^' ','
它将csv文件转换为UTF-8编码。字节顺序标记,而不是垃圾字符。字节顺序标记,而不是垃圾字符。无法从head-n1 test.csv | xxd中识别它。它不在开头显示
fffe
?00000000:fffe 4d00 6f00 6200 6900 6c00 6500 6e00..M.o.b.i.l.e.n。但是如何识别它呢?xxd
命令转储二进制数据。您可以在开头看到“00000000:fffe”部分。“00000000:”是地址,“fffe”是数据。它告诉文件以“0xfffe”开头,UTF-16LE编码的BOM
。无法从head-n1 test.csv | xxd中识别它。它不在开头显示fffe
?00000000:fffe 4d00 6f00 6200 6900 6c00 6500 6e00..M.o.b.i.l.e.n。但是如何识别它呢?xxd
命令转储二进制数据。您可以在开头看到“00000000:fffe”部分。“00000000:”是地址,“fffe”是数据。它告诉文件以“0xfffe”开头,UTF-16LE编码的BOM
。