쉘 스크립트의 인코딩 문제

쉘 스크립트의 인코딩 문제

다음 코드가 있습니다.

#!/bin/bash
task=$1
xml=$(curl -sL "http://login:[email protected]/issues/$task.xml")
id=$(xmllint --xpath '//issue/id/text()' --format - <<<"$xml")
name=$(xmllint --xpath '//issue/subject/text()' --encode utf8 - <<<"$xml")

echo "task #$id - $name"

하지만 실행하면 다음과 같이 키릴 문자가 인코딩됩니다.

task #10014 - &#x41B;&#x438;&#x447;&#x43D;&#x44B;&#x439; &#x43D;&#x43E;&#x43C;&#x435;&#x440; &#x43A;&#x43B;&#x438;&#x435;&#x43D;&#x442;&#x430;

문제를 해결하도록 도와주세요. 이 텍스트를 인코딩하고 싶지 않습니다.

답변1

몇 분 동안 어려움을 겪은 후에는 xmllint대개 포기하고 xmlstarlet대신 사용하게 되는데, 이는 일반적으로 기대한 대로 작동하는 경향이 있습니다. 여기:

xmlstarlet sel -t -v '//issue/subject' <<< "$xml"

(또는 <rant>XML을 완전히 버리고 보다 합리적인 형식을 사용</rant>).

관련 정보