필자는 perl XML 라이브러리에 너무 익숙하지 않다. (사실, 나는 일반적으로 인코딩을 이해하는데 너무 빨랐다.) "à"과 같은 문자를 가지고 XML에 넣는 문자열을 사용했다. 파일을 열었을 때 파일을 열면 해당 문자가 포함 된 행에서 인코딩 오류가 발생합니다.어떻게하면 XML 문서에 넣을 수 있도록 Perl 문자열을 인코딩 할 수 있습니까?
그래서 문자열을 가져 와서 XML로 인코딩하는 간단한 방법이 필요합니다.
필자는 perl XML 라이브러리에 너무 익숙하지 않다. (사실, 나는 일반적으로 인코딩을 이해하는데 너무 빨랐다.) "à"과 같은 문자를 가지고 XML에 넣는 문자열을 사용했다. 파일을 열었을 때 파일을 열면 해당 문자가 포함 된 행에서 인코딩 오류가 발생합니다.어떻게하면 XML 문서에 넣을 수 있도록 Perl 문자열을 인코딩 할 수 있습니까?
그래서 문자열을 가져 와서 XML로 인코딩하는 간단한 방법이 필요합니다.
XML에서 UTF-8 인코딩을 지정해야합니다. 예를 들면 다음과 같습니다.
UTF-8 and Unicode Standards에는 많은 유용한 정보가 있습니다.
Perl 프로그램은 출력 파일 핸들을 UTF-8 인코딩으로 설정해야 데이터를 올바르게 쓸 수 있습니다. 예를 들어 open에 대한 perl 문서를 참조하십시오.
유일한 XML 관련 이스케이프 처리는 XML 예약 문자입니다. Stackoverflow의 Where can I get a list of the XML document escape characters?을 참조하십시오.
당신은 XML의 표준 큰 망치입니다 LibXML를 사용하여 XML 특정 문자
나는 대답 2를 얻을 수 없었다. 이 시도는 "잘 형성되지 (유효하지 않은 토큰)"라는 XML을 생성합니다
#!/usr/bin/perl -wT
use XML::LibXML;
use HTML::Entities;
binmode(STDOUT, ':utf8');
my $string = 'foo ä bar';
$string = decode_entities($string);
print XML::LibXML::Document->new('1.0', 'UTF-8')->createTextNode($string)->toString();
대답은 훨씬 더 될 수있다 : ① 조잡 하이퍼 텍스트 복사 ("여기", 빈혈 링크 텍스트를 사용). ② 잠재적으로 혼란스러운 정보 :'use utf8; '은 실제로 프로그래머가 Perl 소스 코드를 UTF-8로 인코딩했다는 것을 Perl에게 알려주는 경우에만 필요합니다. 이것은 질문에서 질문 된 인코딩을 사용하여 파일을 쓰는 것과는 다른 개념입니다. ③ 부정확 한 용어 : * 구분 기호 * (XML §4.6)에는 이스케이프 처리가 필요합니다. ④ 모듈에 퍼머 링크가없는 경우. – daxim
나는 그 모든 것을 고쳤습니다. 나는 당신이 가장 큰 문제를 놓쳤다 고 생각한다 : XML을 직접 작성해서는 안되므로 이것을 생각할 필요가 없다. 모든 것을 할 수있는 모듈을 사용하십시오. :) 오, 조금 더 많은 담당자와 당신도 것들을 해결할 수 :) –