iwlist wlo1 scan | grep ESSID
스크립트 내에서 실행하고 있습니다 .
다음 형식으로 프랑스어 문자를 표시합니다.
\xC3\x89
É와 \xC3\xA9
é의 경우.
이 형식을 무엇이라고 부르는지 잘 모르겠습니다. 나는 사용하려고유니코드 변환에 대한 답변 echo -ne '\xC3\xA9' | iconv -f utf-16be
하지만 쎩
.
이 형식의 공식 이름은 무엇입니까? Bash에서 어떻게 변환하나요?
답변1
16진수 숫자 상수는 일반적으로 0x
접두사로 표시됩니다.
문자 및 문자열 상수는 \x
두 개의 16진수 접두사가 붙은 16진수로 문자 코드를 나타낼 수 있습니다.
echo -ne '\xC3\x89'
당신에게 주어져야 합니다 É
.
-e
- 백슬래시 이스케이프 해석 활성화( 16진수 값 (1~2자리)\xHH
이 포함된 바이트 포함)HH
다루다더 나은 휴대성사용 printf
기능:
printf "%b" '\xC3\x89'
É
답변2
노력하다
% echo -n éÉ | hd
00000000 c3 a9 c3 89 |....|
00000004
hd
hexdump 유틸리티는 어디에 있습니까?
그래서 당신의 일은 단지UTF-8인코딩(관찰한 출력은 \xC3\x89
UTF-8의 16진수 표현입니다). 오늘 우리는UTF-8은 어디에나 있습니다.
내 환경에는 (비록 내가 프랑스인이기는 하지만) LANG=en_US.UTF-8
둘 다 있습니다.LC_ALL=en_US.UTF-8
반품,
echo '\xC3\x89\xC3\xA9'
생산하다
Éé
예상대로.
이것도 이렇다
echo "\\xC3\\x89\\xC3\\xA9" | iconv -t utf-8
또한 읽어보세요로케일(7).
일부문자 인코딩(예: Old PlainsASCII 코드) é
또는 É
문자가 없고 다른 문자(예:ISO-8859-1) 다르게 인코딩합니다.
답변3
iwlist
ASCII 비제어 문자에 해당하지 않는 모든 바이트를 표시합니다. 여기서 는 16진수 바이트 수 \xHH
입니다 .HH
이 인코딩을 실행 취소하려면 출력을 iwlist
다음으로 파이프하면 됩니다.
perl -pe 's/\\x([\da-f]{2})/chr(hex($1))/gie'
0xc3
다음 바이트는 0xa9
문자의 UTF-8 인코딩을 구성합니다 é
.
로케일에서도 UTF-8 인코딩을 사용하는 경우 출력에 perl
해당 문자가 표시됩니다 é
. 그렇지 않은 경우(아마도 UTF-8이 표준이므로) 항상 의 출력을 파이프하여 UTF-8에서 해당 로케일에 사용되는 문자 인코딩으로 perl
변환 할 수 있습니다.iconv -f utf-8
f