2017-02-06 8 views
0

학교에서 수업을 위해 작성해야했던 유니 코드 32 디코더 프로그램을 테스트하려고합니다. 나는 그것을 해독하려고 시도 할 수 있도록 파일에 UTF 32 바이트를 정확하게 쓸 솔루션을 찾고있다.값을 UTF 32로 인 코드

저는 유니 코드를 UTF32 인코더로 프로그래밍하지 않아도 테스트 할 수있는 방법을 개발하려고 노력해 왔습니다. 즉,이 테스트를 통해 테스트해야합니다. 나는 온라인에서 editpad (https://www.editpadlite.com/)라고 불리는 프로그램을 사용하여 utf32로 인코딩 할 수있게했다. 그런 다음 프로그램을 테스트 할 수 있었다.

단, I는 해당 프로그램에 U + 2A580 (유니 코드 코드 포인트) 인코딩 시도 할 다음 보려는 리눅스에서

od -tx1 file.txt 

를 단말 명령을 사용하고 결과를 볼 것이다 :

00 00 fe ff 00 00 d8 69 00 00 dd 80 

BOM을 제외하고는 나에게 아무런 의미가 없습니다. UTF32를 잘못 이해하고 있습니까? 또는 오류가 있습니다 .. 나는 UTF32 값이 02 a5와 같을 것으로 기대합니다. 80

EDIT : 내 운영 체제가 Linux, Fedora 전용입니다. 페도라 릴리즈 24

+0

질문에 운영 체제를 편집 할 수 있습니까? – Paulb

+0

스택 오버플로에 대해 묻는다면 프로그래밍 문제가 될 것입니다. 따라서 프로그램에서 변환을 수행하는 코드는 관련이 있지만 아직 생략되었습니다. – tadman

+0

@tadman은 프로그래밍과 관련이 있다고 생각했습니다.이 경우에는 내 코드가 문제가되지 않습니다. 어떻게 테스트 할 수 있을까요? –

답변

0

당신은 유니 코드 U+2A580이 UTF-32BE에 다음 바이트 시퀀스로 인코딩 된 코드 포인트 것이 올바른 :

00 02 A5 80

당신이 실제로 일어날보고있다하는 것은 코드 포인트가 UTF-16으로 인코딩되고 먼저 두 개의 UTF-16 서로 게이트 코드 단위 (0xD869, 0xDD80)가 UTF-32BE로 개별적으로 인코딩됩니다.

이 일어나는 또 다른 표시는 첫번째 바이트의 시퀀스이다 : 그 는 UTF-32BE BOM이지만,이 UTF-16BE BOM은 UTF-32BE으로 인코딩도 이다

00 00 FE FF

.

그래서, 다음 중 하나를

  • EditPad 잘못 이중 인코딩을하고있다.
  • EditPad가 UTF-32로 저장하라는 메시지를 표시 했는데도 od 출력이 UTF-32 입력으로 잘못 표시된 경우에도 EditPad가 UTF-16으로 저장됩니다.