문제

ANSI 인코딩 된 파일이 있습니다. 그러나 그것은 그 안에 아랍어 문자를 보여줍니다. 이 텍스트 파일은 일부 프로그램에 의해 생성되었지만 (정보가 없음) 아랍어 문자가 나타나기 위해 일종의 내부 인코딩 (내가 말할 수 있고 가능하다면)이있는 것 같습니다.

그런 것이 있습니까? 그렇지 않다면 ANSI 파일에 아랍어 문자가 어떻게 표시 될 수 있습니까?

*가능하면 Java 코드로 설명하십시오


판 01

Notepad ++에서 열면 페이지 인코딩이 ANSI임을 보여줍니다. 이 사진을 확인하십시오 :

http://www.4shared.com/file/221862075/e8705951/text-windows.html


판 02

파일을 확인할 수 있습니다.

http://www.4shared.com/file/221853641/3fa1af8c/data.html

도움이 되었습니까?

해결책

Firefox와 Opera에서 파일을 열었습니다. 두 브라우저에 올바르게 표시되도록 캐릭터를 아랍어 Windows-1256으로 설정해야 했으므로 파일의 인코딩이 그럴 가능성이 높습니다.

참고 : 나는 원래 이것을 의견으로 게시했지만 답변을하도록 요청 받았다.

다른 팁

ANSI가 인코딩 된 것을 어떻게 알 수 있습니까? UTF-8과 같은 멀티 바이트 인코딩이 아니라면 이와 같은 아랍어 코드 페이지를 사용하여 인코딩 된 것 같습니다. Windows-1256.

16 진 편집기의 파일을보고 아랍어 문자가 어떤 숫자를 가지고 있는지, 그리고 그 방식으로 어떤 인코딩 / 코드 페이지를 만들 었는지 알아낼 수 있습니다.

짧은 대답: 아마도 텍스트 파일은 "ANSI"가 아니라 UTF-8 일 것입니다.

긴 대답:

첫째, "ANSI"(Windows)이라는 용어는 고정 인코딩을 의미하지 않습니다. 의미는 언어 설정에 달려 있습니다. 예를 들어, 서유럽과 미국에서는 일반적으로 Windows-1252 (변형 라틴어 -1로도 알려진 ISO/IEC 8859-1), 일본에서는 그렇습니다 시프트 JIS, 아랍어 국가에서는 그렇습니다 ISO/IEC_8859-6.

아랍어가 아닌 버전의 Windows를 사용하고 언어 설정을 변경하지 않고 메모장으로 열 때 파일에 아랍어 문자를 볼 수있는 경우 이러한 ANSI 인코딩 중 어느 것도 아닙니다. 대신, 아마도 아마도있을 것입니다 유니 코드.

Windows에서 일반적으로 의미하는 "유니 코드"를 의미하지는 않습니다. UTF-16LE. 그것은 수 UTF-8 또한. 둘 다 현재 유니 코드로 정의 된 100.000+ 문자를 모두 인코딩 할 수있는 인코딩이지만 다른 방식으로 수행합니다. 둘 다 가변 길이 인코딩, 모든 문자가 동일한 수의 비트를 사용하여 인코딩되는 것은 아닙니다.

UTF-8에서 각 문자는 1 ~ 4 바이트로 인코딩됩니다. 인코딩은 ASCII 문자가 1 바이트로 인코딩되도록 선택되었습니다.

UTF-16에서 각 문자는 4 개의 바이트로 인코딩됩니다. 이 인코딩은 원래 유니 코드에 64K 문자가 미만인 경우에 발명되었으므로 하나는 모든 문자를 단일 16 비트 단어로 인코딩 할 수 있습니다. 나중에, 유니 코드가 64K 한계를 넘어서 자라야한다는 것이 분명 해졌을 때, 0xD800-0XDFFF 범위의 단어 쌍이 처음 64K (마이너스 0x800)의 문자를 나타내는 데 사용되는 방식이 발명되었습니다.

실제로 파일의 내용을 보려면 16 진 편집기에서 열 수 있습니다.

  • 처음 두 바이트가 FF FE 인 경우 UTF-16LE (Little Endian) 일 것입니다.
  • 처음 두 바이트가 Fe FF 인 경우 UTF-16BE (Big Endian, Windows에서는 거의 없음) 일 것입니다.
  • 처음 3 바이트가 EF BB BF라면 UTF-8 일 것입니다.
  • 00 바이트를 많이 보면 UTF-16 (또는 UTF-32, 00 바이트 쌍이 보이면) 일 것입니다.
  • 아랍어 문자가 단일 바이트를 점유한다면 ISO-8859-6 (예 : D5 일 것입니다) 일 가능성이 높습니다.
  • 아랍어 문자가 여러 바이트를 차지하면 UTF-8 일 가능성이 높습니다 (예 : ش ش는 d8 b4 일 것입니다).

그런 것이 있습니까?

아니.

그렇지 않다면 ANSI 파일에 아랍어 문자가 어떻게 표시 될 수 있습니까?

Windows-Ansi 인코딩 된 파일이 아닙니다. 아마도 a를 사용합니다 가변 폭 인코딩, 대부분의 UTF-8 : UTF-8의 많은 일반적인 캐릭터 위치는 US-ASCII에서의 위치와 동일하며 (실제로는 설계되었습니다) Windows-ANSI의 추론에 의해서도 동일합니다.

편집하다: 우리는이 혼란에 대해 Microsoft에게 감사해야합니다. 인코딩과 관련하여 "ANSI"는 잘 지정되지 않습니다. 일반적으로 CodePage 1252 ( "Wind

그러나 다른 국가에서는 Windows에서 사용하는 기본 인코딩 (이전 Windows 버전에서는… 기본값은 UTF-8입니다)은 다음과 같습니다. ~ 아니다 Windows-1252이지만 오히려 다른 인코딩으로 "ANSI"라고도합니다. 이 경우 CodePage 1256.

ANSI 문자 인코딩은 217자를 허용하며 아랍어 문자가 포함되어 있지 않습니다. 아마도 파일이 대체 인코딩을 사용한다고 생각합니다.

ANWSERENT 귀하의 편집, 문제는 메모장 ++에 문제가있는 것으로 보입니다.

먼저 파일을 다운로드하고 Vim을 사용하여 인코딩을 확인하려고했는데 알지 못하는 것 같고 두 번째 컴퓨터에서 latin1 메모장 ++에서 일어난 일과 유사 할 수 있습니다 (일반적인 답변).
그래서 나는했다 file data.txt 그리고 출력은 다음과 같습니다.

data.txt: ISO-8859 text, with CRLF line terminators

도움이 되었기를 바랍니다.

편집하다:
브라우저를 사용하면이 답변이 잘못되었음을 보여주었습니다.

ISO-8859-4 및 ISO-8859-13은 오류없이 텍스트를 표시 할 수 있지만 아랍어가 아닌 문자를 표시 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top