텍스트 문서의 유니코드 인코딩을 확인하는 방법

텍스트 문서의 유니코드 인코딩을 확인하는 방법

특정 인코딩의 텍스트 문서 또는 문자열입니다.UTF-8, 내가 보고 있는 문자를 나타내는 유니코드 인코딩을 찾는 가장 쉬운 방법은 무엇입니까?

특히 Á(라틴 문자) 및 А́(키릴 자모)와 같이 거의 동일한 문자에 어떤 코드 포인트가 사용되는지 알고 싶습니다. 또한 UTF-8로 변환하는 방법도 알고 싶습니다. 예를 들어 편집기에서 작업하는 방법을 선호 kate하지만 명령줄 대안도 허용됩니다.

내가 시도한 것

텍스트를 실행해 보았지만 od -xc별 도움이 되지 않는다는 것을 깨달았습니다.UTF-8 인코딩바이트 사이의 비트를 재정렬합니다. 다음 사례 연구는 키릴 모음을 강조하는 상황이 얼마나 힘든지를 보여줍니다.

잘라내어 붙여넣기에 유용한 유니코드 문자가 많이 포함된 텍스트 문서를 사용하는데, 이 형식이 일반적인 형식보다 더 편리하다고 생각합니다.캐릭터 맵kate그런 파일의 인코딩을 확인하고 싶기 때문에 편집기의 옵션이 유용할 것입니다 .

내가 무엇을 바라는가?

VMS에서 프로그래밍 가능한 편집기 TPU를 사용할 때 파일 바이트의 세로로 정렬된 16진수 코드(적절한 탭 간격 포함)를 표시하는 텍스트 줄 아래에 두 개의 추가 줄을 표시하는 기능을 추가하도록 쉽게 프로그래밍할 수 있습니다. UTF-8의 경우 최대 8줄이 필요하지만 이는 유용한 가능성입니다.

또 다른 가능성은 문자를 선택하고 해당 문자를 생성하는 데 사용된 코드 포인트 및/또는 해당 코드 포인트를 UTF-8을 통해 바이트로 변환하는 방법을 보여주는 창을 팝업하는 기능을 갖는 것입니다. 이 경우 더 많은 정보를 표시할 수 있지만 긴 텍스트의 세부 정보를 시각적으로 검색하는 데는 유용하지 않습니다.

편집기의 기능 대신에 새로운 형식이나 그 od파생 형식을 사용할 수 있습니다.

사례 연구: 러시아어 악센트 모음

저는 현재 러시아어를 배우고 있는데 키릴 문자에 악센트가 있는 문자를 입력하고 싶습니다. 악센트가 있는 러시아어 모음을 수집했습니다(예:포포루가이), 다음 문자를 보내주세요.

Á á Ó ó É é У́ ý И́ и́ Ы́ ы́ Э́ э́ Ю́ ю́ Я́ я́

나는에서 수집했다이 답변아래 질문 1 의 경우 이러한 강세 모음은 를 사용하여 표현되어야 합니다 U+0301 COMBINING ACUTE ACCENT. 이 프로그램을 실행하면 od -tx1 -tc -w26( -tc따라서 공백, 너비 26이 이 사이트에 적합합니다), 내가 얻는 것은 다음과 같습니다.

0000000  c3  81  20  c3  a1  20  c3  93  20  c3  b3  20  c3  89  20  c3  a9  20  d0  a3  cc  81  20  c3  bd  20
        303 201     303 241     303 223     303 263     303 211     303 251     320 243 314 201     303 275    
0000032  d0  98  cc  81  20  d0  b8  cc  81  20  d0  ab  cc  81  20  d1  8b  cc  81  20  d0  ad  cc  81  20  d1
        320 230 314 201     320 270 314 201     320 253 314 201     321 213 314 201     320 255 314 201     321
0000064  8d  cc  81  20  d0  ae  cc  81  20  d1  8e  cc  81  20  d0  af  cc  81  20  d1  8f  cc  81  0a
        215 314 201     320 256 314 201     321 216 314 201     320 257 314 201     321 217 314 201

Kate내 파일이 UTF-8 형식이라고 알려줍니다(아래 Tools Encoding Unicode). UTF-8은 U+0080..U+07FF 범위에 있는 키릴 문자와 결합 악센트를 나타냅니다(이러한 코드 포인트의 경우 2바이트). 가장 낮은 11비트는 이 2바이트에 110xxxxx2 10xxxxxx2 로 표시됩니다 . 1& 0가 지정되었으며 x코드 포인트에서 1비트입니다. 다시 말해서,

  • 첫 번째 바이트 = 0xc0+엑스,
  • 두 번째 바이트 = 0x80+와이, 어디
  • 엑스그리고와이코드 포인트를 2 6 = 으로 나눌 때의 몫과 나머지 0x40, 즉 상위 10비트(5개는 0이 아님)와 하위 6비트입니다.

결합된 급성 기호의 코드 포인트는 U+0301이므로 해당 비트의 0011 00 00 0001의미는엑스= 0x0c그리고와이= 0x01이므로 바이트로 표시됩니다 0xcc 0x81. 비슷하게,

키릴 문자 "Á" → U+0410 → 0100 00 01 00000x10 0x100xd0 0x90.
키릴 문자 "а́" → U+0430 → 0100 00 11 00000x10 0x200xd0 0xb0.

이는 덤프 출력과 일치하지 않지만

라틴어 "Á" → U+00C1 → 0000 11 00 00010x03 0x010xc3 0x81.

그래서 제가 저장한 것은 Á á Ó ó É é실제로 라틴어입니다. 6개 모두 2바이트만 사용하므로 악센트를 결합할 필요가 없습니다!


노트

1내가 있었어KDE에서 악센트가 있는 러시아어 문자를 입력하는 방법은 무엇입니까?. 그 대답을 듣고 나는 이 질문에 설명된 기능을 원한다는 것을 깨닫게 되었습니다.

답변1

이맥스

C-x =( M-x what-cursor-position)예를 들어 화면 하단에 현재 문자에 ​​대한 코드 포인트 정보를 표시합니다.

Char: И (1048, #o2030, #x418, file ...) point=7 of 8 (75%) column=0

C-u C-x =코드 포인트, 바이트 표현, 유니코드 문자에 대한 메타데이터, 문자를 표시하는 데 사용되는 글꼴 등을 포함한 추가 정보가 있는 창을 엽니다.

             position: 7 of 8 (75%), column: 0
            character: И (displayed as И) (codepoint 1048, #o2030, #x418)
    preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x0418
               script: cyrillic
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong), Y:2-byte Cyrillic, c:Chinese, h:Korean, j:Japanese, y:Cyrillic
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #xD0 #x98
            file code: #xD0 #x98 (encoded by coding system utf-8-unix)
              display: by this font (glyph code)
    xft:-DAMA-Ubuntu Mono-normal-normal-normal-*-17-*-*-*-m-0-iso10646-1 (#x2CB)
         Unicode data:
                 Name: CYRILLIC CAPITAL LETTER I
             Category: Letter, Uppercase
      Combining class: Lu
        Bidi category: Lu
             Old name: CYRILLIC CAPITAL LETTER II
            Lowercase: и

Character code properties: customize what to show
  name: CYRILLIC CAPITAL LETTER I
  old-name: CYRILLIC CAPITAL LETTER II
  general-category: Lu (Letter, Uppercase)
  decomposition: (1048) ('И')

[back]

명령줄

이것unicode유틸리티(Debian/Ubuntu/...와 같은 일부 배포판에서 사용 가능)pip3 install unicode)은 하나 이상의 유니코드 문자에 대한 정보를 표시합니다. 편집기에서 복사하여 붙여넣는 경우 해당 편집기는 파일과 다르게 클립보드를 인코딩할 수 있습니다.

$ unicode И
U+0418 CYRILLIC CAPITAL LETTER I
UTF-8: d0 98 UTF-16BE: 0418 Decimal: И Octal: \02030
И (и)
Lowercase: 0438
Category: Lu (Letter, Uppercase)
Bidi: L (Left-to-Right)

관련 정보