한글을 출력했는데 \u로 시작하는 코드로 깨질 때 복구하는 방법

singleheart·2023년 6월 18일
0

예시

번역 API를 통해서 영문을 한글로 번역하다가 아래와 같은 에러를 만났습니다

JSON Error: {"question": "\ubbf8\ub808\uc774\uc2dc\uc2a4\ub9c8\uc758 \uc0c1\uc218\ub294 2kg\uc785\ub2c8\ub2e4. \uc0c1\uc218\uc758 \uac00\uaca9\uc740 1kg\uc당 $82\uc785\ub2c8\ub2e4. \ubbf8\ub808\uc774\uc2dc\uc2a4\ub9c8\uc740 \uc6d0\ubcf8\uc744 $180\uc785\ub2c8\ub2e4. \uc0c1\uc218\uc758 \ud560\uc218\uc5d0\uc11c \uc0c1\uc218\uc758 \uac00\uaca9\uc744 \uc9c0\uc6d0\ud558\uba74 \uc774\ubbf8\uc808\uc774 \ub9c8\uc774\ud06c\ub85c\uc6b4 $164\uc785\ub2c8\ub2e4.\n\uc774\ubbf8\uc9c0 \uc6d0\ubcf8\uc740 $180 - $164 = $16 \ub9c8\uc785\ub2c8\ub2e4\uc785\ub2c8\ub2e4.\n#### 16", "answer": "\ubbf8\ub808\uc774\uc2dc\uc2a4\ub9c8\uc758 2kg\uc744 \uac00\uc9c0\ub294 \ubc29\uc5b4\ub294 1kg\uc당 $82\uc785\ub2c8\ub2e4\uc785\ub2c8\ub2e4.\n\uc778\ub3c4\ub294 $180 - $164 = $16\uc785\ub2c8\ub2e4.\n#### 16"}

한글이 있어야 할 자리인데 웬 \u 문자만 보입니다. \u 뒤에 4자리니까 유니코드라는 것은 알겠는데 이것을 복구할 방법이 막막합니다. 파이썬이라면 urllib.unquote를 쓰겠지만, 리눅스 터미널이라면? (또는 유닉스나 맥이라면?)

방법

아래 스크립트로 변환할 수 있습니다

perl -Mutf8 -CS -pe 's/\\u([0-9a-fA-F]{4})/chr(hex($1))/eg;'

뒤에 파일명을 써 주어도 되고, 파이프에 붙여 쓸 수도 있습니다

결과

JSON Error: {"question": "미레이시스마의 상수는 2kg입니다. 상수의 가격은 1kg\uc당 $82입니다. 미레이시스마은 원본을 $180입니다. 상수의 할수에서 상수의 가격을 지원하면 이미절이 
마이크로운 $164입니다.\n이미지 원본은 $180 - $164 = $16 마입니다입니다.\n#### 16", "answer": "미레이시스마의 2kg을 가지는 방어는 1kg\uc당 $82입니다입니다.\n인도는 $180 - $164 = $16입니다.\n#### 16"}

번역문인데 무슨 말인지 모르겠습니다. 아마 그래서 JSON 에러도 났겠지요. 그래도 이제 사람의 눈으로 보고 판단할 수 있습니다

참고자료

  • 스택오버플로의 댓글 훌륭한 해결책인데 업보트가 한 개도 없네요
  • 위 예시 원문은 인터넷에 공개된 영어 데이터입니다
profile
개발자

0개의 댓글