저는 Postgres 데이터베이스를 UTF-8로 인코딩했습니다.Postgres 데이터베이스에서 Perl 인코딩 문제를 통해 XML로 데이터 추출하기
이use DBI;
use XML::Generator::DBI;
use XML::SAX::Writer;
my $dbh = DBI->connect("dbi:Pg:dbname=postgres;host=MYHOST;port=2278",
username,
password,
{RaiseError => 1},
);
my $handler = XML::SAX::Writer->new(Output => 'foo.xml');
my $generator = XML::Generator::DBI->new(
Handler => $handler,
dbh => $dbh,
Indent => 1,
);
$select = qq(
!!!!SQL QUERY!!!!!
);
$generator->execute(
$select,
undef,
RootElement => 'root',
);
이 잘 작동하고 나는 유효한 XML 문서를 얻을 : 즉,
use DBI
use XML::Generator::DBI
use XML::SAX::Writer
쿼리를 사용하여 XML 파일에 포스트 그레스 데이터베이스에서 데이터를 추출 : 나는 다음과 같은 모듈과 펄을 사용하고 있습니다 그 결과로 내 문제는 데이터베이스의 일부 데이터가 바이너리입니다. 즉 UTF-8이 아닌 문자가 있습니다. 이 경우, XML :: 발전기 :: DBI는이를 감지하고 XML 파일에 다음과 같이 데이터를 출력 :
<foo dbi:encoding='base64'>VGhpcyByZXBvcnQgbGlzdHMgYWxsIGZpbGVzIGhhdmluZyBhY2Nlc3NlcyB0byBkYXRhYmFzZSB0
YWJsZXMuDQpJdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOiAgRmlsZSBmdWxs
IG5hbWUsIGFjY2Vzc2VkIHRhYmxl
</foo>
네임 스페이스는 또한 URL http://axkit.org/NS/xml-generator-dbi에 바인딩됩니다. 이것은 모듈 문서에 따라 올바른 동작이지만 내가 알고 싶은 것은 : 어떻게 든이 base64로 인코딩 된 문자열을 UTF-8로 변환하여 실제로 사용할 수 있습니까?
필자는 Perl 전문가가 아니며, Postgres도 그렇게 쉽게 이해할 수 없다. 많은 감사.
답장을 보내 주셔서 감사합니다. 모듈에 대해 몰랐는데 - 감사합니다 (아직 통합하는 방법을 모르지만 아직 살펴볼 것입니다). base64로 나오는 데이터는 일반적으로 코드 샘플이므로 테이블에 저장된 Java, C++ 코딩 샘플과 같지만 반드시 그런 것은 아닙니다. 내 질문에 예를 들면,이 번역 :이 보고서는 데이터베이스 테이블에 액세스하는 모든 파일을 나열합니다. 그것은 다음과 같은 정보를 제공합니다 : File full name, accessible tables "- base64 출력을 일으키는 것은 같아야합니다 : – JamesH
데이터를 실제로 확장하는 것입니다. 제 질문에 제공된 예제는 실제로 다음과 같이 저장됩니다. Postgres 데이터베이스의 내용 : "이 보고서는 데이터베이스 테이블에 대한 액세스 권한이있는 모든 파일을 나열합니다. 다음 정보를 제공합니다 : 파일 성명, 액세스 테이블 " 나는 첫 번째 전체 정지 이후에 캐리지 리턴이 있다고 믿습니다.이 예제에서 base64는": "가 UTF -8 문자를 허용하고 base64를 사용해서는 안됩니다 ... – JamesH
추가 ...이 데이터를 생성하는 스크립트를 찾았습니다. 포함 된 내용은 다음과 같습니다. 이 보고서는 데이터베이스 테이블에 액세스하는 모든 파일을 나열합니다 .'! xD!''! xA!그것은 다음과 같은 정보를 제공합니다 : File full name, accessible table – JamesH