일부 UTF-8 문자(향후 버전에서 수정될 수 있음)를 제외하고 ASCII 로그 파일이 있습니다.
현재 나는 gedit/less 등을 통해 이 파일을 보기/검색/편집 가능하게 만드는 방법을 알아내야 합니다.
enca -L none file
반품 7bit ASCII characters Surrounded by/intermixed with non-text data
.
enconv -L none -X ASCII file
"성공" 이지만 enconv -L none -X UTF-8 file
실제로는 아무것도 변경되지 않습니다.
이 파일을 어떻게 복구할 수 있나요?
업데이트(일부 답변 후):
실제로 아래에 명시된 대로(모두가 동의합니다 :)) ASCII + UTF-8은 UTF-8입니다. 내가 가진 것은
0003bbc0 28 4c 6f 61 64 65 72 29 20 50 61 74 69 65 6e 74 |(Loader) Patient|
0003bbd0 20 00 5a 00 5a 00 5a 00 38 00 31 00 30 00 34 00 | .Z.Z.Z.8.1.0.4.|
0003bbe0 20 6e 6f 74 20 66 6f 75 6e 64 20 69 6e 20 64 61 | not found in da|
0003bbf0 74 61 62 61 73 65 0d 0a 32 36 20 53 65 70 20 32 |tabase..26 Sep 2|
나는 이것이 cp1252 유형 인코딩이 될 것이라고 믿습니다 .사실, 나는 그것이 무엇인지 모릅니다. cp1252는 ASCII의 1바이트일 것입니다. 그렇죠?
그런데 사실 Linux barfs는 입력 파일(ID 소스)이 잘못 인코딩되었음을 찾는 데 도움이 되었습니다.
답변1
"일부 UTF-8 문자를 제외한 ASCII" 파일은 UTF-8 파일입니다.
UTF-8 로케일을 사용하는 한 보기/검색/편집이 가능합니다.
ASCII에는 UTF-8 특수 문자와 동등한 표현이 없기 때문에 ASCII로 변환할 수 없습니다.
Isolatin으로 전환하고 싶을 수도 있습니다
iconv -f UTF-8 -t ISO-8859-1
답변2
당신이 가지고 있는 것은 실제로 ASCII(일반적인 8비트 바이트 인코딩)이며 일부UCS-2(유니코드는 각 문자가 2개의 8비트 바이트로 인코딩되는 BMP(Basic Plane)로 제한됩니다.) 또는 아마도UTF-16(U+D7FF 이상의 코드 포인트에 대한 다중 단어 인코딩을 사용하여 모든 유니코드를 인코딩할 수 있는 UCS-2 확장).
이 불경한 혼합물을 즉시 처리할 수 있는 도구를 찾을 수 있을지 의문입니다. 이 파일을 완전히 보편적으로 디코딩할 수 있는 방법은 없습니다. 귀하의 경우, 아마도 어떤 시점에서 일부 ASCII 데이터가 UTF-16으로 인코딩되었을 것입니다(Windows 및 Java는 UTF-16과 같으며 Unix 세계에서는 거의 들어본 적이 없습니다). 원본 데이터가 모두 ASCII라고 가정하면 널바이트를 모두 제거하여 사용 가능한 파일을 복구할 수 있습니다.
<bizarre tr -d '\000' >ascii
답변3
파일에 일부 UTF-8 문자가 포함된 ASCII가 포함되어 있으면 해당 파일은 UTF-8 파일로 정의됩니다. 순수 ASCII 파일도 유효한 UTF-8입니다.
현재 사용 중인 내용은 ASCII, UTF-8 및 기타 단일 바이트 인코딩(Latin-1 등)이 혼합된 것 같습니다. 그러면 정리도 힘들지만, 파일에 실제로 어떤 내용이 들어있는지도 모르고 좋은 조언을 드리기는 어렵습니다. 출력을 게시해 보십시오 hexdump -C file
(문제가 있는 문자가 포함된 몇 줄로 줄임).
답변4
chardet
패키지에서 시도해 보세요 python-chardet
. enca
인식할 수 없는 파일에서 시도했습니다... chardet
문자 집합 유형이 감지되었습니다. (맨 페이지에 따르면,엔카대표하다매우 간단한 문자 세트 분석 :)
유형을 감지할 수 없으면 재인코더가 입력 형식을 알아야 하므로 재인코딩은 상당히 소용이 없습니다(참조:문자 집합 감지, 다음과 같은)
예를 들어 다른 텍스트 편집기에서 파일을 열어볼 수 있습니다. emacs
, vim
, jedit
, 등.
gedit
파일 열기 대화 상자에는 선택/추가/제거 옵션이 있습니다. 문자 세트 목록에서 문자 세트를 선택/추가할 수 있습니다(문자 세트가 무엇인지 알고 나면). gedit
이 목록에 표시된 유형만 열립니다.
또는 워드 프로세서 파일일 수도 있습니다. OpenOffice.org를 사용하여 열어보세요.
또 다른 (절박한(?)) 옵션은 user.will이 파일에 인쇄 가능한 문자열을 strings
인쇄한다는 것입니다.
strings
문자 집합 감지문제가 가득합니다. ~을 위한많은라틴어 스크립트를 기반으로 한 언어(귀하의 스크립트인 것 같습니다)에는많은문자셋이 변경됩니다. 이러한 문자 집합 중 유일한 공통 주제는 기본 7비트 ASCII 문자 집합이며, 이는 16진수 \x00에서 \x7F까지의 128가지 가능성으로 구성됩니다.
누구나많은비트 8(또 다른 128자)을 사용하는 단일 바이트 문자 세트는 다음을 사용합니다.상한다양한 문자 세트가 있는 만큼 다양한 방법이 있습니다.
너가 아니라면알다인코딩이란 무엇이며 감지 프로그램은 인코딩이 무엇인지 모르기 때문에 일반적으로 통계적 확률 게임(역공학)입니다.편지찾고 있습니다. 바이트 값만 보입니다. 고유하게 정의된 차이점이 발견되지 않은 경우(사소한 작업이 아님) 유일한 방법은 가장 일반적으로 사용되는 일치 문자 집합을 선택하는 것입니다.
결론은 파일에 완벽하게 유효한 문자 집합 A가 포함되어 있더라도 문자 집합 B만큼 탐지 프로그램에 유효하다는 것입니다... 이유는 다음과 같습니다.알 필요가있다문자 인코딩! -- 특히 단일 바이트 문자만 사용하는 문자 세트의 경우.
멀티바이트 문자 집합은 더 명확합니다.지문, 하지만 그렇다고 해도 샘플 세트가 충분히 크지 않으면 추측 게임입니다...