UTF-8 코드가 포함된 8진수 이스케이프 ASCII 파일을 UTF-8로 변환

UTF-8 코드가 포함된 8진수 이스케이프 ASCII 파일을 UTF-8로 변환
  1. 그 자체는 ASCII 파일이지만 UTF-8 코드를 나타내는 8진수 이스케이프 시퀀스를 포함하는 텍스트 파일이 있습니다.

    \350\207\252\345\212\250\346\216
    

    이러한 ASCII 파일을 실제 utf-8로 인코딩된 텍스트 파일로 변환할 수 있는 프로그램이나 명령이 있습니까?

  2. 그런데,이 웹사이트"온라인 ASCII(유니코드 이스케이프)에서 유니코드(UTF-8)로의 변환기 도구"이며,이 웹사이트"온라인 유니코드(UTF-8)를 ASCII(Unicode Escaped)로 변환하는 도구"입니다. 내 질문에 그들이 전환할 것인가? 그렇지 않다면 그들은 어떤 종류의 전환을 하게 될까요?

답변1

쉘 변수, dash, mksh 또는 bash에 이러한 이스케이프 시퀀스가 ​​있는 경우:

printf %b "$string_with_backslash_escapes"

이는 POSIX가 아닙니다. 지정자는 POSIX이지만 %b각 백슬래시 뒤에 하나씩 필요합니다. 0이는 또한 다른 백슬래시 이스케이프( \n개행, \t탭 등) 에 대해서도 설명합니다.

이것은 8진수 이스케이프 시퀀스만 변환하는 Perl의 한 줄짜리 코드입니다.

perl -pe 's[\\(?:([0-7]{1,3})|(.))] [defined($1) ? chr(oct($1)) : $2]eg'

http://www.rapidmonkey.com/unicodeconverter/reverse.jsp8진수 값을 Latin-1 문자로 해석하는데 페이지에서 왜 유니코드와 UTF-8을 언급하는지 모르겠습니다. 나는 무엇을 모른다http://www.rapidmonkey.com/unicodeconverter/advanced.jsp하다.

답변2

만 사용불다:

3.1.2.4 ANSI-C 참조

이 형태의 단어는 $'string'특별히 처리됩니다. 단어는 다음과 같이 확장됩니다. , ANSI C 표준에 지정된 대로 백슬래시 이스케이프 문자를 바꿉니다. 백슬래시 이스케이프 시퀀스가 ​​있는 경우 다음과 같이 디코딩됩니다.

<i>nnn값이 8진수 값인 8비트 문자에 에(1~3자리)

UTF-8 터미널의 데모:

$ echo $'\350\207\252\345\212\250\346\216'
自动?

시퀀스의 형식이 잘못되었기 때문에 마지막 문자가 물음표로 나타납니다. 필요한 3바이트 중 2바이트만 존재합니다.


귀하가 링크한 웹사이트에서 수행되는 작업은 다음과 같습니다.RFC 5137인코딩 디코딩.

"ASCII(Unicode Escaped)" 텍스트 영역에 입력 하면 유니코드 문자 로 출력 \u81ea\u52a8됩니다.自动U+81개(UTF-8 표현은 16진수로 e8 87 aa, 8진수로 350 207 252임) 유니코드 문자입니다.U+52A8(UTF-8 표현은 16진수로 e5 8a a8, 8진수로 345 212 250입니다.)

답변3

대화형 셸의 Python은 이 중 적어도 일부를 수행할 수 있습니다. 그러나 위의 순서가 깨진 것 같습니다.

wilmer@ruby:~$ 파이썬
Python 2.7.10(기본값, 2015-07-1, 10:54:53)
[GCC 4.9.2] linux2
자세한 내용을 보려면 도움말, 저작권, 크레딧 또는 라이센스를 입력하세요.
>>> 유니코드("\350\207\252\345\212\250\346\216", "utf-8")
역추적(가장 최근 호출 마지막):
  파일 "", 1행, at
UnicodeDecodeError: 'utf8' 코덱은 위치 6-7의 바이트를 디코딩할 수 없습니다: 예기치 않은 데이터 끝
>>> 유니코드("\350\207\252\345\212\250", "utf-8")
당신은'\u81ea\u52a8'
>>> 유니코드 인쇄("\350\207\252\345\212\250", "utf-8")
자동적 인

답변4

일부 소프트웨어를 사용하는 것만으로도 충분할 수 있다고 덧붙이고 싶습니다.선택, 복사, 붙여넣기이스케이프된 텍스트입니다. 예를 들어 Wireshark는 UTF-8 텍스트를 8진수 이스케이프 바이트 시퀀스로 표시하지만 이를 Gedit에 복사하여 붙여 넣으면 \341\203\231과 같은 일반 텍스트가 კ가 됩니다.

관련 정보