특정 인코딩의 텍스트 문서 또는 문자열입니다.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바이트에 110xxxxx
2 10xxxxxx
2 로 표시됩니다 . 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 0000
→0x10 0x10
→0xd0 0x90
.
키릴 문자 "а́" → U+0430 →0100 00
11 0000
→0x10 0x20
→0xd0 0xb0
.
이는 덤프 출력과 일치하지 않지만
라틴어 "Á" → U+00C1 →
0000 11
00 0001
→0x03 0x01
→0xc3 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)