텍스트 파일의 특정 줄(예: 1123번 줄, 아래 참조)을 살펴보면 잘리지 않는 공백이 있는 것 같지만 확실하지 않습니다.
$ cat myfile.csv | sed -n 1123p | cut -f2
Lisztes feher
$ cat myfile.csv | sed -n 1123p | cut -f2 | od -An -c -b
L i s z t e s 302 240 f e h e r \n
114 151 163 172 164 145 163 302 240 146 145 150 145 162 012
하지만, 그ASCII 코드잘림 방지 공백의 8진수 표현은 240입니다. 그렇다면 302는 무엇에 해당합니까? 이 파일에 특별한 것이 있나요?
이해를 돕기 위해 이런 질문을 드립니다. 나는 이미 sed
다음을 사용하여 문제를 해결하는 방법을 알고 있습니다 .답변:
$ cat myfile.csv | sed -n 1123p | cut -f2 | sed 's/\xC2\xA0/ /g' | od -An -c -b
L i s z t e s f e h e r \n
114 151 163 172 164 145 163 040 146 145 150 145 162 012
자세한 내용은 원본 파일이 .xlsx(뛰어나다) 형식. 내 컴퓨터가 실행될 때쉬 벤투, 열어본다무료 사무실계산(v5.1). 그런 다음 "문자 세트 = 유니코드(UTF-8)"를 사용하여 "텍스트 CSV"로 저장하고 탭을 필드 구분 기호로 사용합니다.
$ file myfile.csv
myfile.csv: UTF-8 Unicode text
답변1
U+00A0 유니코드 문자의 UTF-8 인코딩입니다.
$ unicode U+00A0
U+00A0 NO-BREAK SPACE
UTF-8: c2 a0 UTF-16BE: 00a0 Decimal:   Octal: \0240
Category: Zs (Separator, Space)
Bidi: CS (Common Number Separator)
Decomposition: <noBreak> 0020
$ locale charmap
UTF-8
$ printf '\ua0' | od -to1
0000000 302 240
0000002
UTF-8은 문자당 바이트 수가 가변적인 유니코드 인코딩입니다. 문자 집합으로서의 유니코드는 iso8859-1(latin1이라고도 함)의 상위 집합이며, 이 자체는 ASCII의 상위 집합입니다.
iso8859-1에서는 줄바꿈하지 않는 공백 문자(iso8859-1의 코드 포인트 0xa0, 유니코드의 코드 포인트와 유사)는 0xa0 바이트로 표시되는 반면, UTF-8에서는 코드 포인트 0~127만 표시됩니다. 1바이트(이로 인해 UTF-8은 ASCII의 상위 집합이 됩니다. 즉, ASCII 파일도 UTF-8 파일입니다.)
128 이상의 코드 포인트는 인코딩하는 데 문자당 더 많은 바이트를 사용합니다. 바라보다위키피디아UTF-8 인코딩 알고리즘에 대한 자세한 정보입니다.
답변2
Alt-Gr302 240은 + 의 조합입니다 space.
프랑스어 키보드에서는 a 뒤에 공백을 입력하려고 할 때 |
+를 원할 때 Alt-gr++를 입력하면 | Alt-gr오류가 발생하기 쉽습니다.spaceAlt-gr| space