dw8*_*547 11 byte-order-mark dos2unix utf-16
我通过选择Export-> Related files 从OECD http://stats.oecd.org/Index.aspx?datasetcode=CRS1("CRS 2013 data.txt')下载文件.我想在Ubuntu(14.04 LTS)中使用此文件.
当我跑:
dos2unix CRS\ 2013\ data.txt
Run Code Online (Sandbox Code Playgroud)
我知道了:
dos2unix: Binary symbol 0x0004 found at line 1703
dos2unix: Skipping binary file CRS 2013 data.txt
Run Code Online (Sandbox Code Playgroud)
我检查文件的编码:
file --mime-encoding CRS\ 2013\ data.txt
Run Code Online (Sandbox Code Playgroud)
并看到:
CRS 2013 data.txt: utf-16le
Run Code Online (Sandbox Code Playgroud)
我做:
iconv -l | grep utf-16le
Run Code Online (Sandbox Code Playgroud)
这不会返回任何东西,所以我这样做:
iconv -l | grep UTF-16LE
Run Code Online (Sandbox Code Playgroud)
返回:
UTF-16LE//
Run Code Online (Sandbox Code Playgroud)
然后我跑:
iconv --verbose -f UTF-16LE -t UTF-8 CRS\ 2013\ data.txt -o crs_2013_data_temp.txt
Run Code Online (Sandbox Code Playgroud)
并检查:
file --mime-encoding crs_2013_data_temp.txt
Run Code Online (Sandbox Code Playgroud)
并看到:
crs_2013_data_temp.txt: utf-8
Run Code Online (Sandbox Code Playgroud)
然后我尝试:
dos2unix crs_2013_data_temp.txt
Run Code Online (Sandbox Code Playgroud)
得到:
dos2unix: Binary symbol 0x04 found at line 1703
dos2unix: Skipping binary file crs_2013_data_temp.txt
Run Code Online (Sandbox Code Playgroud)
然后我试着强迫它:
dos2unix -f crs_2013_data_temp.txt
Run Code Online (Sandbox Code Playgroud)
它工作,即dos2unix完成转换而不会挽救/抱怨,但当我打开文件时,我看到像"FoÃ"Ťa和Ã"ÅšajniÃ"Ťe"这样的条目.
我的问题是为什么?是因为dos2unix看不到BOM吗?因为它丢失了?我没有完成转换吗?如何转换此文件(正确?)以便我可以阅读它.
您在文件中看到的0x0004字符与BOM没有任何关系(顺便说一句,这很好) - 它是来自C0控件集的EOT(传输结束)字符,并且一直处于该代码点因为7位ASCII是新的热点.(它也是熟悉的Control-D Unix EOF序列.)
不幸的是,由于文件是UTF-16 dos2unix,因此应用于tr文件以剥离回车的预处理将不起作用.iconv但是,既然适合您,您可以使用它转换为UTF-8(tr将继续使用),然后运行此tr命令:
tr -d '\r' < crs_2013_data_temp.txt > crs_2013_data_unix.txt
Run Code Online (Sandbox Code Playgroud)
为了使文本文件进入Unix行结束约定.但是,您必须密切注意文件所需的任何工具,以确保它们不会阻塞Ctrl-D/EOT字符; 如果他们这样做,你可以使用
tr -d '\004' < crs_2013_data_unix.txt > crs_2013_data_clean.txt
Run Code Online (Sandbox Code Playgroud)
摆脱它.
至于它是如何到达那里的?我责怪比利时人让他们偷偷摸摸他们给经合组织的数据,他们可能会用这些数据cat - > file或其他类似的平庸手段.此外,一些文本编辑器通过隐藏控制字符来尝试有点过于有用,即使其他工具在看到它们时会挽救,因为他们认为你只是填充了一段二进制文件,假装是文本一段时间.
| 归档时间: |
|
| 查看次数: |
10075 次 |
| 最近记录: |