BOM으로 시작하는 파일 처리 (FF FE)


10

FF FEBOM 과 함께 .csv 파일을 받았습니다 .

$ head -n1 dotan.csv | hd
00000000  ff fe 41 00 64 00 20 00  67 00 72 00 6f 00 75 00  |..A.d. .g.r.o.u.|

awk구문 분석하는 데 사용하면 null 바이트가 많아 바이트 순서로 인한 것 같습니다. 일반적인 도구가 작동하도록이 파일에서 바이트 순서를 바꾸려면 (CLI 사용) 어떻게해야합니까?

이 파일은 오직 ASCII 문자 (BOM 제외) grep라고 생각 하지만 이진 파일이라고 생각할 수는 없습니다 .

$ grep -P '^[\x00-\x7f]' dotan.csv 
Binary file dotan.csv matches

VIM에서 동일한 문자열을 검색하면 모든 문자 일치를 보여줍니다 !

iconvASCII로 변환하는 데 사용하면 \ x00 값이 제거되지 않습니다. 실제로 UTF-8 대신 null 바이트처럼 보이기 때문에 문제가 더 악화됩니다!

$ iconv -f UTF-8 -t ASCII dotan.csv > fixed.txt 
iconv: illegal input sequence at position 0

$ iconv -f UTF-8 -t ASCII//IGNORE dotan.csv > fixed.txt

$ head -n1 fixed.txt | hd
00000000  41 00 64 00 20 00 67 00  72 00 6f 00 75 00 70 00  |A.d. .g.r.o.u.p.|

일반적인 도구가 작동하도록이 파일에서 바이트 순서를 바꾸려면 (CLI 사용) 어떻게해야합니까?


Windows 또는 Mac에서 만든 CSV 파일?
cuonglm

파일의 일부를 줄 수 있습니까?
cuonglm

다음은 파일의 고유 한 문제를 유지하는 익명화 된 파일 부분에 대한 링크 입니다. 감사합니다!
dotancohen

답변:


16

위키 백과 기사 에서 FF FE의미 UTF16LE합니다. 따라서 다음 iconv으로 변환하도록 지시 해야 UTF16LE합니다 UTF8.

iconv -f UTF-16LE -t UTF-8 dotan.csv > fixed.txt

고마워요! UTF-8과 UTF-16 BOM이 혼재되어있었습니다. FFFE와 FEFF는 UTF-8이라고 생각했으며 UTF-16 BOM을 전혀 몰랐습니다. 실제로, 그것들은 UTF-16 BOM이며, (쓸모없는) UTF-8 BOM!을 몰랐습니다.
dotancohen

@ dotancohen : Fedora에서 테스트했으며 tail솔루션이 정상적으로 작동합니다. 어떤 OS를 사용하십니까?
cuonglm

Windows의 Git Bash에서 버전 "iconv (GNU libiconv 1.14)"에 대해서는 작동하지 않습니다 (예 : BOM 제거). 그러나 (이유가 무엇이든) UTF-16바이트 순서 버전 중 하나 대신 사용하는 것이 좋습니다.
Kenny Evitt

3

dos2unix BOM을 제거하고 UTF-16을 UTF-8로 변환합니다.

$ printf %s あ|recode ..utf16 >a;xxd -p a;dos2unix a;xxd -p a
feff3042
dos2unix: converting file a to Unix format...
e38182

dos2unix UTF-8 BOM도 제거합니다.

$ printf %b '\xef\xbb\xbfa'>a;dos2unix a;xxd -p a
dos2unix: converting file a to Unix format...
61

0

또한 StackOverflow에 대한 답변 : UTF-8 파일에서 BOM을 제거하는 방법은 무엇입니까? @rici 는 좋은 대답이 있습니다.

짧은 답변:

  • 짧은 대답 : sed -i $'1s/^\uFEFF//' file.txt, 그러나 BSD 또는 OS / X에는 없습니다.
  • 또 다른 답 : vi file.txt, :set nobomb, :w, 단순하지만 매뉴얼
  • dos2unuix를 설치하십시오. dos2unix -r file.txt
  • 이 마크는 파일이 UTF-8이라는 것을 포함하여 몇 가지 가능한 의미를 갖습니다. Wikipedia Article을 참조하십시오 .
  • Windows 프로그램은 이러한 마크를 추가하는 것을 좋아합니다. 대부분의 편집자는이 마크를 제거하지 않습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.