Switch input encoding based on XML processing instruction

Change-Id: I89e20c8af762615d37c216b0c89227fc3644fcb3
diff --git a/Changes b/Changes
index b47c446..47de756 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,7 @@
+0.02 2020-10-15
+        - Switch input encoding based on XML
+          processing instruction.
+
 0.02 2020-10-14
         - Update KorAP-Tokenizer to v2.0.0.
 
diff --git a/lib/KorAP/XML/TEI/Header.pm b/lib/KorAP/XML/TEI/Header.pm
index 48a7ce6..9ec9c05 100644
--- a/lib/KorAP/XML/TEI/Header.pm
+++ b/lib/KorAP/XML/TEI/Header.pm
@@ -16,7 +16,8 @@
 use constant {
   TEXT      => 0,
   HEADTYPE  => 1,
-  SIGLE     => 2
+  SIGLE     => 2,
+  INPUTENC  => 3
 };
 
 
@@ -30,9 +31,9 @@
 
 # Create new header object
 sub new {
-  my ($class, $text) = @_;
+  my ($class, $text, $input_enc) = @_;
 
-  my $self = bless [$text, undef, ''], $class;
+  my $self = bless [$text, undef, '', $input_enc // 'UTF-8'], $class;
 
   # Check header types to distinguish between siglen types
   if ($text =~ m!^<${_HEADER_TAG}\s+[^<]*type="([^"]+)"!) {
@@ -61,6 +62,8 @@
   # Iterate over file handle
   while (<$fh>) {
 
+    $_ = decode($self->[INPUTENC], $_);
+
     # Change:
     #   This version keeps comments in header files
 
diff --git a/script/tei2korapxml b/script/tei2korapxml
index 8c35e90..8ace82a 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -9,8 +9,7 @@
 
 use File::Basename qw(dirname);
 
-use open qw(:std :utf8); # assume utf-8 encoding
-use Encode qw(encode decode);
+use Encode qw(decode);
 
 use XML::CompactTree::XS;
 use XML::LibXML::Reader;
@@ -215,6 +214,7 @@
 binmode $input_fh;
 
 my $pos;
+my $input_enc = 'UTF-8';
 my $l = length('</' . $_TEXT_BODY) + 1;
 
 # ~ loop (reading input document) ~
@@ -223,6 +223,14 @@
 
   $_ = remove_xml_comments( $input_fh, $_ ); # remove HTML (multi-line) comments (<!--...-->)
 
+  # Set input encoding
+  if ( index($_, '<?xml') == 0 && $_ =~ /\sencoding=(['"])([^\1]+?)\1/) {
+    $input_enc = $2;
+    next;
+  };
+
+  $_ = decode($input_enc, $_);
+
   if ( index($_, $_TEXT_BODY) >= 0 && m#^(.*)<${_TEXT_BODY}(?: [^>]*)?>(.*)$# ){
 
     # ~ start of text body ~
@@ -243,6 +251,7 @@
     while (<$input_fh>) {
 
       $_ = remove_xml_comments( $input_fh, $_ );
+      $_ = decode($input_enc, $_);
 
       # ~ end of text body ~
       if (($pos = index($_, '</' . $_TEXT_BODY)) >= 0) {
@@ -418,7 +427,7 @@
     };
 
     # Parse header
-    my $header = KorAP::XML::TEI::Header->new($content)->parse($input_fh);
+    my $header = KorAP::XML::TEI::Header->new($content, $input_enc)->parse($input_fh);
 
     # Header was parseable
     if ($header) {
diff --git a/t/data/goe_sample.i5.iso.xml b/t/data/goe_sample.i5.iso.xml
new file mode 100644
index 0000000..92ca755
--- /dev/null
+++ b/t/data/goe_sample.i5.iso.xml
@@ -0,0 +1,453 @@
+<?xml version="1.0" encoding="iso-8859-15"?>
+<!DOCTYPE idsCorpus  PUBLIC "-//IDS//DTD IDS-I5 1.0//EN" "http://corpora.ids-mannheim.de/I5/DTD/i5.dtd">
+<idsCorpus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" TEIform="teiCorpus.2">
+ <idsHeader type="corpus" pattern="allesaußerZtg/Zschr" status="new" version="1.1" TEIform="teiHeader">
+  <fileDesc>
+   <titleStmt>
+    <korpusSigle>GOE</korpusSigle>
+    <c.title>Goethe-Korpus</c.title>
+   </titleStmt>
+   <publicationStmt>
+    <distributor>		Institut für Deutsche Sprache		</distributor>
+    <pubAddress>		Postfach 10 16 21, D-68016 Mannheim	</pubAddress>
+    <telephone>		+49 (0)621 1581 0			</telephone>
+    <availability region="world">QAO-NC</availability>
+    <pubDate/>
+   </publicationStmt>
+   <sourceDesc>
+    <biblFull>
+     <titleStmt>
+      <x.title/>
+     </titleStmt>
+     <editionStmt/>
+     <publicationStmt>
+      <distributor/>
+      <pubAddress/>
+      <availability region="world">QAO-NC</availability>
+      <pubDate/>
+     </publicationStmt>
+    </biblFull>
+    <biblStruct>
+     <monogr>
+      <h.title type="main">Goethes Werke</h.title>
+      <h.title type="sub"/>
+      <h.author>Goethe, Johann Wolfgang von</h.author>
+      <editor>Trunz, Erich</editor>
+      <edition>
+       <further/>
+       <kind>Hamburger Ausgabe in 14 Bänden</kind>
+       <appearance/>
+      </edition>
+      <imprint>
+       <publisher>Verlag C. H. Beck</publisher>
+       <pubDate type="year">1982</pubDate>
+       <pubDate type="month"/>
+       <pubDate type="day"/>
+       <pubPlace key="DE">München</pubPlace>
+      </imprint>
+     </monogr>
+    </biblStruct>
+    <reference type="super" assemblage="non-automatic">GOE Goethe, Johann Wolfgang von: Goethes Werke, Hamburger Ausgabe in 14 Bänden, Bde. 6 - 14, Hrsg.: Trunz, Erich. - München: Verlag C. H. Beck, Auflagen von 1982</reference>
+   </sourceDesc>
+  </fileDesc>
+  <encodingDesc>
+   <projectDesc/>
+   <samplingDecl>		In der BOT-Vorlage Abrückung aller Satzzeichen vom vorhergehenden oder nachfolgenden Wort,
+		was bei der anschließenden Konvertierung so weit wie möglich beseitigt wurde.
+		Kleinschreibung von Wörtern am Satzanfang, wenn sie auch im Satzinnern kleingeschrieben werden.
+		Expansion bzw. Alternativschreibung bei Wörtern mit Klammerung im Wortinnern (sog. Sparschreibung).
+		Alternativschreibung bei Wörtern mit klammernden Apostrophen/Anführungszeichen im Wortinnern.
+		Erweitertes Markup ohne Verwendung der gedruckten Vorlage:
+		- Umfangreiche Korrekturen am Markup der BOT-Vorlage
+		- Markierung von Listen, Tabellen, Quellen- und Verfasserangaben, Gesprächssequenzen
+		- Markierung von Textkomponenten, die den Textfluss unterbrechen, wie Fußnoten, Anmerkungen, Randtexte, Captions, Bildunterschriften
+		- Expansion der Ergänzungen durch Unterstrich bei Wortgruppen mit Ergänzungsbindestrich
+		- Markierung von Kardinal- und Ordinalzahlen in römischen Ziffern</samplingDecl>
+   <editorialDecl>
+    <transduction>		TraDuCES - Korpus-Transformationscompiler, Version 3.6.3,
+		Eric Seubert, IDS Mannheim, 5. Mai 2010
+		Optionen bei der Konvertierung:
+		- Dubletten-Modus:
+		  Entfernung aller als Dubletten klassifizierten Texte.
+		- Indexierungsmodus für COSMAS II:
+		  Erzeugung von übergeordneten Dokument-Referenzen, falls die
+		  jeweiligen Dokumente nur einen einzigen selbstständigen Text enthalten.
+		  Entfernung aller Deklarationen für Dubletten.
+		  Entfernung von Texten mit Sperrvermerken.
+		  Entfernung von Texten mit minimalem Inhalt.</transduction>
+    <transduction>$Id: fixPreXCES.l 1194 2008-04-30 14:16:53Z kupietz $</transduction>
+    <transduction>$Id: idsces2idsxces 1843 2011-09-13 14:52:21Z kupietz $</transduction>
+    <pagination type="yes"/>
+   </editorialDecl>
+   <tagsDecl>
+    <tagUsage gi="pb"/>
+    <tagUsage gi="date"/>
+    <tagUsage gi="measure"/>
+    <tagUsage gi="num"/>
+    <tagUsage gi="orig"/>
+    <tagUsage gi="time"/>
+   </tagsDecl>
+   <classDecl>
+    <taxonomy id="topic">
+     <h.bibl>Thementaxonomie (siehe http://www.ids-mannheim.de/kl/projekte/methoden/te.html)</h.bibl>
+     <category id="topic.fiktion">
+      <catDesc>Fiktion</catDesc>
+      <category id="topic.fiktion.vermischtes">
+       <catDesc>Fiktion:Vermischtes</catDesc>
+      </category>
+     </category>
+     <category id="topic.freizeit-unterhaltung">
+      <catDesc>Freizeit_Unterhaltung</catDesc>
+      <category id="topic.freizeit-unterhaltung.reisen">
+       <catDesc>Freizeit_Unterhaltung:Reisen</catDesc>
+      </category>
+      <category id="topic.freizeit-unterhaltung.rundfunk">
+       <catDesc>Freizeit_Unterhaltung:Rundfunk</catDesc>
+      </category>
+      <category id="topic.freizeit-unterhaltung.vereine-veranstaltungen">
+       <catDesc>Freizeit_Unterhaltung:Vereine_Veranstaltungen</catDesc>
+      </category>
+     </category>
+     <category id="topic.gesundheit-ernaehrung">
+      <catDesc>Gesundheit_Ernaehrung</catDesc>
+      <category id="topic.gesundheit-ernaehrung.ernaehrung">
+       <catDesc>Gesundheit_Ernaehrung:Ernaehrung</catDesc>
+      </category>
+      <category id="topic.gesundheit-ernaehrung.gesundheit">
+       <catDesc>Gesundheit_Ernaehrung:Gesundheit</catDesc>
+      </category>
+     </category>
+     <category id="topic.kultur">
+      <catDesc>Kultur</catDesc>
+      <category id="topic.kultur.bildende-kunst">
+       <catDesc>Kultur:Bildende Kunst</catDesc>
+      </category>
+      <category id="topic.kultur.darstellende-kunst">
+       <catDesc>Kultur:Darstellende Kunst</catDesc>
+      </category>
+      <category id="topic.kultur.film">
+       <catDesc>Kultur:Film</catDesc>
+      </category>
+      <category id="topic.kultur.literatur">
+       <catDesc>Kultur:Literatur</catDesc>
+      </category>
+      <category id="topic.kultur.mode">
+       <catDesc>Kultur:Mode</catDesc>
+      </category>
+      <category id="topic.kultur.musik">
+       <catDesc>Kultur:Musik</catDesc>
+      </category>
+     </category>
+     <category id="topic.natur-umwelt">
+      <catDesc>Natur_Umwelt</catDesc>
+      <category id="topic.natur-umwelt.garten">
+       <catDesc>Natur_Umwelt:Garten</catDesc>
+      </category>
+      <category id="topic.natur-umwelt.tiere">
+       <catDesc>Natur_Umwelt:Tiere</catDesc>
+      </category>
+      <category id="topic.natur-umwelt.wetter-klima">
+       <catDesc>Natur_Umwelt:Wetter_Klima</catDesc>
+      </category>
+     </category>
+     <category id="topic.politik">
+      <catDesc>Politik</catDesc>
+      <category id="topic.politik.ausland">
+       <catDesc>Politik:Ausland</catDesc>
+      </category>
+      <category id="topic.politik.inland">
+       <catDesc>Politik:Inland</catDesc>
+      </category>
+      <category id="topic.politik.kommunalpolitik">
+       <catDesc>Politik:Kommunalpolitik</catDesc>
+      </category>
+     </category>
+     <category id="topic.rest">
+      <catDesc>Rest</catDesc>
+      <category id="topic.rest.boersenkurse">
+       <catDesc>Rest:boersenkurse</catDesc>
+      </category>
+      <category id="topic.rest.geburt-tod-heirat">
+       <catDesc>Rest:geburt_tod_heirat</catDesc>
+      </category>
+      <category id="topic.rest.impressum">
+       <catDesc>Rest:impressum</catDesc>
+      </category>
+      <category id="topic.rest.inhaltsverzeichnisse">
+       <catDesc>Rest:inhaltsverzeichnisse</catDesc>
+      </category>
+      <category id="topic.rest.ligatabellen">
+       <catDesc>Rest:ligatabellen</catDesc>
+      </category>
+      <category id="topic.rest.tabellen">
+       <catDesc>Rest:tabellen</catDesc>
+      </category>
+      <category id="topic.rest.veranstaltungshinweise">
+       <catDesc>Rest:veranstaltungshinweise</catDesc>
+      </category>
+     </category>
+     <category id="topic.sport">
+      <catDesc>Sport</catDesc>
+      <category id="topic.sport.ballsport">
+       <catDesc>Sport:Ballsport</catDesc>
+      </category>
+      <category id="topic.sport.fussball">
+       <catDesc>Sport:Fussball</catDesc>
+      </category>
+      <category id="topic.sport.motorsport">
+       <catDesc>Sport:Motorsport</catDesc>
+      </category>
+      <category id="topic.sport.radsport">
+       <catDesc>Sport:Radsport</catDesc>
+      </category>
+      <category id="topic.sport.tennis">
+       <catDesc>Sport:Tennis</catDesc>
+      </category>
+      <category id="topic.sport.vermischtes">
+       <catDesc>Sport:Vermischtes</catDesc>
+      </category>
+      <category id="topic.sport.wintersport">
+       <catDesc>Sport:Wintersport</catDesc>
+      </category>
+     </category>
+     <category id="topic.staat-gesellschaft">
+      <catDesc>Staat_Gesellschaft</catDesc>
+      <category id="topic.staat-gesellschaft.arbeit-und-beruf">
+       <catDesc>Staat_Gesellschaft:Arbeit_und_Beruf</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.bildung">
+       <catDesc>Staat_Gesellschaft:Bildung</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.biographien-interviews">
+       <catDesc>Staat_Gesellschaft:Biographien_Interviews</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.drittes-reich-rechtsextremismus">
+       <catDesc>Staat_Gesellschaft:Drittes_Reich_Rechtsextremismus</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.familie-geschlecht">
+       <catDesc>Staat_Gesellschaft:Familie_Geschlecht</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.kirche">
+       <catDesc>Staat_Gesellschaft:Kirche</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.recht">
+       <catDesc>Staat_Gesellschaft:Recht</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.tod">
+       <catDesc>Staat_Gesellschaft:Tod</catDesc>
+      </category>
+      <category id="topic.staat-gesellschaft.verbrechen">
+       <catDesc>Staat_Gesellschaft:Verbrechen</catDesc>
+      </category>
+     </category>
+     <category id="topic.technik-industrie">
+      <catDesc>Technik_Industrie</catDesc>
+      <category id="topic.technik-industrie.edv-elektronik">
+       <catDesc>Technik_Industrie:EDV_Elektronik</catDesc>
+      </category>
+      <category id="topic.technik-industrie.kfz">
+       <catDesc>Technik_Industrie:Kfz</catDesc>
+      </category>
+      <category id="topic.technik-industrie.transport-verkehr">
+       <catDesc>Technik_Industrie:Transport_Verkehr</catDesc>
+      </category>
+      <category id="topic.technik-industrie.umweltschutz">
+       <catDesc>Technik_Industrie:Umweltschutz</catDesc>
+      </category>
+      <category id="topic.technik-industrie.unfaelle">
+       <catDesc>Technik_Industrie:Unfaelle</catDesc>
+      </category>
+     </category>
+     <category id="topic.wirtschaft-finanzen">
+      <catDesc>Wirtschaft_Finanzen</catDesc>
+      <category id="topic.wirtschaft-finanzen.banken">
+       <catDesc>Wirtschaft_Finanzen:Banken</catDesc>
+      </category>
+      <category id="topic.wirtschaft-finanzen.bilanzen">
+       <catDesc>Wirtschaft_Finanzen:Bilanzen</catDesc>
+      </category>
+      <category id="topic.wirtschaft-finanzen.oeffentliche-finanzen">
+       <catDesc>Wirtschaft_Finanzen:Oeffentliche_Finanzen</catDesc>
+      </category>
+      <category id="topic.wirtschaft-finanzen.sozialprodukt">
+       <catDesc>Wirtschaft_Finanzen:Sozialprodukt</catDesc>
+      </category>
+      <category id="topic.wirtschaft-finanzen.waehrung">
+       <catDesc>Wirtschaft_Finanzen:Waehrung</catDesc>
+      </category>
+     </category>
+     <category id="topic.wissenschaft">
+      <catDesc>Wissenschaft</catDesc>
+      <category id="topic.wissenschaft.populaerwissenschaft">
+       <catDesc>Wissenschaft:Populaerwissenschaft</catDesc>
+      </category>
+     </category>
+     <category id="topic.unklassifizierbar">
+      <catDesc>Text ist thematisch nicht klassifizierbar.</catDesc>
+     </category>
+    </taxonomy>
+   </classDecl>
+  </encodingDesc>
+  <profileDesc>
+   <langUsage>
+    <language id="de" usage="100">Deutsch</language>
+   </langUsage>
+   <textDesc/>
+  </profileDesc>
+ </idsHeader>
+ <idsDoc type="text" version="1.0" TEIform="TEI.2">
+  <idsHeader type="document" pattern="text" status="new" version="1.1" TEIform="teiHeader">
+   <fileDesc>
+    <titleStmt>
+     <dokumentSigle>GOE/AGA</dokumentSigle>
+     <d.title>Goethe: Autobiographische Schriften II, (1817-1825, 1832)</d.title>
+    </titleStmt>
+    <publicationStmt>
+     <distributor/>
+     <pubAddress/>
+     <availability region="world">QAO-NC</availability>
+     <pubDate/>
+    </publicationStmt>
+    <sourceDesc>
+     <biblStruct>
+      <monogr>
+       <h.title type="main"/>
+       <edition>
+        <further/>
+        <kind/>
+        <appearance/>
+       </edition>
+       <imprint/>
+       <biblNote n="1">Zur Entstehungszeit siehe Bd. 9, Nachwort, S. 621</biblNote>
+      </monogr>
+     </biblStruct>
+    </sourceDesc>
+   </fileDesc>
+   <profileDesc>
+    <creation>
+     <creatDate>1820-1822</creatDate>
+     <creatRef>(Geschrieben: 1820-1822)</creatRef>
+     <creatRefShort>(Geschr. 1820-1822)</creatRefShort>
+    </creation>
+    <textDesc>
+     <textType>Autobiographie</textType>
+     <textTypeRef/>
+    </textDesc>
+   </profileDesc>
+  </idsHeader>
+  <idsText version="1.0">
+   <idsHeader type="text" pattern="text" status="new" version="1.1" TEIform="teiHeader">
+    <fileDesc>
+     <titleStmt>
+      <textSigle>GOE/AGA.00000</textSigle>
+      <t.title assemblage="regular">GOE/AGA.00000 Goethe: Campagne in Frankreich, [Autobiographie], (Geschr. 1820-1822), In: Goethes Werke, Bd. 10. - München, 1982</t.title>
+     </titleStmt>
+     <publicationStmt>
+      <distributor/>
+      <pubAddress/>
+      <availability region="world">QAO-NC</availability>
+      <pubDate/>
+     </publicationStmt>
+     <sourceDesc>
+      <biblStruct>
+       <analytic>
+        <h.title type="main">Campagne in Frankreich</h.title>
+        <h.title type="sub">1792</h.title>
+        <h.title type="abbr" level="m">Goethe, Werke; Campagne</h.title>
+        <h.title type="abbr" level="a">Goethe: Campagne in Frankreich, [Autobiographie], (Geschr. 1820-1822)</h.title>
+        <h.author>Goethe, Johann Wolfgang von</h.author>
+        <editor/>
+        <imprint/>
+        <biblScope type="subsume"/>
+        <biblScope type="pp">S. 188-363</biblScope>
+       </analytic>
+       <monogr>
+        <h.title type="main"/>
+        <imprint/>
+       </monogr>
+      </biblStruct>
+      <reference type="complete" assemblage="regular">GOE/AGA.00000 Goethe, Johann Wolfgang von: Campagne in Frankreich. 1792, (Geschrieben: 1820-1822), In: Goethe, Johann Wolfgang von: Goethes Werke, Bd. 10, Autobiographische Schriften II, Hrsg.: Trunz, Erich. München: Verlag C. H. Beck, 1982, S. 188-363</reference>
+      <reference type="short" assemblage="regular">GOE/AGA.00000 Goethe, Werke; Campagne, (Geschr. 1820-1822), 1982, Bd. 10</reference>
+     </sourceDesc>
+    </fileDesc>
+    <encodingDesc>
+     <samplingDecl/>
+     <tagsDecl>
+      <tagUsage gi="pb" occurs="176"/>
+      <tagUsage gi="vers" occurs="3"/>
+      <tagUsage gi="quote" occurs="1"/>
+      <tagUsage gi="p" occurs="13"/>
+      <tagUsage gi="s" occurs="1770"/>
+      <tagUsage gi="num" occurs="6"/>
+      <tagUsage gi="orig" occurs="75"/>
+     </tagsDecl>
+    </encodingDesc>
+    <profileDesc>
+     <textClass/>
+     <textDesc>
+      <textDomain/>
+     </textDesc>
+    </profileDesc>
+   </idsHeader>
+   <text>
+    <front/>
+    <body>
+     <div n="0" complete="y" type="Autobiographie">
+      <pb id="aga.00000-188-pb188" n="188" TEIform="pb"/>
+      <head type="main">
+              <s>Campagne in Frankreich</s>
+            </head>
+      <head type="sub">
+              <s>1792</s>
+            </head>
+      <quote>
+              <s type="manual">auch ich in der Champagne!</s>
+            </quote>
+      <div n="1" complete="y" type="section">
+       <opener type="unspecified">
+                <dateline>den 23. August 1792</dateline>
+              </opener>
+       <p>
+        <s type="manual">gleich nach meiner Ankunft in Mainz besuchte ich Herrn von Stein den älteren, königlich preußischen Kammerherrn und Oberforstmeister, der eine Art Residentenstelle daselbst versah und sich im Haß gegen alles Revolutionäre gewaltsam auszeichnete.</s>
+        <s type="manual">er schilderte mir mit flüchtigen Zügen die bisherigen Fortschritte der verbündeten Heere, und versah mich mit einem Auszug des topographischen Atlas von Deutschland, welchen Jäger zu Frankfurt, unter dem Titel "Kriegstheater", veranstaltet.</s>
+        <s type="manual">mittags bei ihm zur Tafel fand ich mehrere französische Frauenzimmer, die ich mit Aufmerksamkeit zu betrachten Ursache hatte; die eine (man sagte, es sei die Geliebte des Herzogs von Orleans) eine stattliche Frau, stolzen Betragens und schon von gewissen Jahren, mit rabenschwarzen Augen, Augenbraunen und Haar; übrigens im Gespräch mit Schicklichkeit freundlich.</s>
+       </p>
+       <poem>
+        <lg part="u">
+         <l part="u">
+                    <s>hier sind wir denn vorerst ganz still zu Haus ,</s>
+                  </l>
+         <l part="u">
+                    <s>von Tür' zu Türe sieht es lieblich aus ;</s>
+                  </l>
+         <l part="u">
+                    <s>der Küstler froh die stillen Blicke hegt ,</s>
+                  </l>
+         <l part="u">
+                    <s type="manual">wo Leben sich zum Leben freundlich regt.</s>
+                  </l>
+        </lg>
+        <pb id="aga.00000-363-pb363" n="363" TEIform="pb"/>
+        <lg part="u">
+         <l part="u">
+                    <s>und wie wir auch durch ferne Lande ziehn ,</s>
+                  </l>
+         <l part="u">
+                    <s>da kommt es her, da kehrt es wieder hin ;</s>
+                  </l>
+         <l part="u">
+                    <s>wir wenden uns, wie auch die Welt entzücke ,</s>
+                  </l>
+         <l part="u">
+                    <s type="manual">der Enge zu, die uns allein beglücke.</s>
+                  </l>
+        </lg>
+       </poem>
+      </div>
+     </div>
+    </body>
+    <back/>
+   </text>
+  </idsText>
+ </idsDoc>
+</idsCorpus>
diff --git a/t/script.t b/t/script.t
index 88b3d2d..6bf98e4 100644
--- a/t/script.t
+++ b/t/script.t
@@ -306,11 +306,11 @@
   my (undef, $outzip) = korap_tempfile('script_out5');
 
   # because output 'textid=...' goes to STDERR (see script/tei2korapxml)
-  binmode STDERR, qw{ :encoding(UTF-8) };
+  binmode STDERR;
 
   stderr_like(
     sub { `cat '$tplfile' | perl '$script' -ti > '$outzip'` },
-    qr!tei2korapxml: .*? text_id=$text_sigle_lax!, # see above: print $fh encode_utf8($tpl);
+    qr!tei2korapxml: .*? text_id=$text_sigle_esc!, # see above: print $fh encode_utf8($tpl);
   );
 };
 
@@ -408,6 +408,32 @@
 };
 
 
+subtest 'Check input encoding' => sub {
+
+  # Load example file
+  test_tei2korapxml(
+    file => catfile($f, 'data', 'goe_sample.i5.xml'),
+    env => 'KORAPXMLTEI_INLINE=1',
+    tmp => 'script_utf8_enc'
+  )
+    ->stderr_like(qr!tei2korapxml: .*? text_id=GOE_AGA\.00000!)
+    ->unzip_xml('GOE/AGA/00000/data.xml')
+    ->content_like(qr/\Q&quot;Kriegstheater&quot;\E/)
+    ->content_like(qr/\QTür&#39;\E/)
+    ;
+
+  test_tei2korapxml(
+    file => catfile($f, 'data', 'goe_sample.i5.iso.xml'),
+    env => 'KORAPXMLTEI_INLINE=1',
+    tmp => 'script_iso_enc'
+  )
+    ->stderr_like(qr!tei2korapxml: .*? text_id=GOE_AGA\.00000!)
+    ->unzip_xml('GOE/AGA/00000/data.xml')
+    ->content_like(qr/\Q&quot;Kriegstheater&quot;\E/)
+    ->content_like(qr/\QTür&#39;\E/)
+    ;
+};
+
 subtest 'Test Log' => sub {
   test_tei2korapxml(
     tmp => 'script_out',