tag:forum.selfhtml.org,2005:/self Zeichencodierung ist falsch – SELFHTML-Forum 2020-07-22T11:36:33Z https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773379?srt=yes#m1773379 Andre76 2020-07-14T13:07:38Z 2020-07-14T13:07:38Z Zeichencodierung ist falsch <p>Hallo, aktuell wird ein Text von einer Fremdanwendung in meine Textareas geschrieben. Leider wird das & Zeichen auch als & Zeichen eingefügt. Ich brauche das aber als &amp;. Nur dann kann es von der Anwendung weiter verarbeitet werden. Habt ihr eine Lösung wie die PHP-Seite aussehen soll.</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>IDS-SCHNITTSTELLE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Warenkorb Rückgabe:<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>textarea</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>warenkorb<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$_REQUEST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"warenkorb"</span><span class="token punctuation">]</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>textarea</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>Sorry für die Frage, aber PHP und Web ist nicht meine Heimat.</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773380?srt=yes#m1773380 Matthias Apsel matthias.apsel@selfhtml.org https://brückentage.info 2020-07-14T13:11:44Z 2020-07-14T13:11:44Z Zeichencodierung ist falsch <p>Hallo Andre76,</p> <p>du suchst möglicherweise <a href="https://www.php.net/manual/de/function.htmlspecialchars.php" rel="nofollow noopener noreferrer">htmlspecialchars()</a>.</p> <p>Bis demnächst<br> Matthias</p> <div class="signature">-- <br> Du kannst das Projekt SELFHTML unterstützen,<br> indem du bei Amazon-Einkäufen <a href="https://smile.amazon.de/ch/314-570-45498" rel="nofollow noopener noreferrer">Amazon smile</a> (<a href="https://www.amazon.de/gp/help/customer/display.html?ie=UTF8&nodeId=202035970%5D" rel="nofollow noopener noreferrer">Was ist das?</a>) nutzt. </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773385?srt=yes#m1773385 Stam 2020-07-14T14:28:40Z 2020-07-14T14:28:40Z Zeichencodierung ist falsch <p>Hallo Matthias,</p> <p>vielen Dank, dass ist die Lösung gewesen.</p> <p>Grüße</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773388?srt=yes#m1773388 Rolf B 2020-07-14T14:48:38Z 2020-07-16T13:55:30Z Zeichencodierung ist falsch <p>Hallo Stam,</p> <p>und das ist auch auf jeden Fall <strong>nötig</strong> gewesen, andernfalls könnte man Dir Bosheiten in die Textarea injizieren und dich hacken.</p> <p><s>Text aus unbekannten Quellen muss man immer maskieren.</s></p> <p>Update: Text muss man immer kontextgerecht maskieren.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773389?srt=yes#m1773389 Stam 2020-07-14T15:26:47Z 2020-07-14T15:26:47Z Zeichencodierung ist falsch <p>Hey Danke, ich war ein wenig schnell mit der Meldung "ich habe es gelöst".</p> <p>Das Problem ist noch folgendes:</p> <p>Ich bekomme in das Feld einen Warenkorb gelegt.</p> <p>Händler A: <code><?xml version="1.0" encoding="utf-8"?><Warenkorb.....</code></p> <p>Händler B: <code><?xml version="1.0" encoding="ISO-8859-1"?><Warenkorb....</code></p> <p>Leider haben die kein festes encoding. Wie könnte ich es hinbekommen das die Umläute immer richtig angezeigt werden.</p> <p>Grüße und Danke</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773412?srt=yes#m1773412 1unitedpower 2020-07-15T10:02:49Z 2020-07-15T10:02:49Z Zeichencodierung ist falsch <blockquote> <p>Text aus unbekannten Quellen muss man immer maskieren.</p> </blockquote> <p>Text <s>aus unbekannten Quellen</s> muss man immer maskieren.</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773399?srt=yes#m1773399 Rolf B 2020-07-14T18:56:38Z 2020-07-14T18:56:38Z Zeichencodierung ist falsch <p>Hallo Stam,</p> <p>sorry, aber deine Problembeschreibung ist schwierig. Du fängst mit einer vermeintlichen Harmlosigkeit an:</p> <blockquote> <p>aktuell wird <strong>ein Text</strong> von <strong>einer</strong> Fremdanwendung in meine Textareas geschrieben , (& vs &amp;)</p> </blockquote> <p>und auf einmal sind es mehrere Händler, die ein unterschiedlich codiertes XML Dokument übermitteln.</p> <p>Bitte fang vorne an. Wie ist der Workflow. Was tun die Händler genau? Wie entsteht das XML Dokument? Warum ist da überhaupt unterschiedliches encoding? Wie kommt das XML Dokument in das Warenkorb-Element? Macht da jemand Copy+Paste in eine textarea? Scripten die Händler ein Form von Dir? Bekommst Du direkt einen HTML Request mit dem form-codierten XML Dokument gePOSTet? Ist auf Seiten der Händler eine definierte Anwendung, die sendet? Oder ist die Landschaft dort heterogen?</p> <p>Warum frage ich soviel? Je nach dem Weg, den die Daten nehmen, ist damit zu rechnen, dass die im XML Dokument behauptete Codierung mehr oder weniger verstümmelt wird. Dass da UTF-8 oder ISO-8859-1 steht, muss nicht heißen, dass das bei Dir im PHP auch exakt so ankommt.</p> <p>Der Punkt ist: Browser arbeiten heute eigentlich mit Unicode oder zumindest UCS-2. D.h. wenn der Händler Dir Text in eine Textarea kopiert, muss beim Copy+Paste Vorgang sichergestellt sein, dass die Umlaute korrekt im Browser ankommen. ABER: dann ist das encoding im XML-Kopf irrelevant, weil der Browser nämlich beim Senden selbst codiert. Entweder basierend auf dem Charset, mit dem Du das Form geschickt hast, oder basierend auf dem accepted-charset Attribut des <form> Elements. Wenn dagegen irgendeine Anwendung Dir einen POST Request schickt, dann muss sie im Content-Type Request-Header mitteilen, wie sie den Content codiert hat, und dann ist diese Codierung relevant. Da kann es zu wilden Kombinationen kommen, z.B. könnte der XML String ein ISO-8859-1 encoding behaupten, aber diese Bytefolge als UTF-8 codierter String übermittelt werden.</p> <p>Deswegen: Um eine Lösung skizzieren zu können, muss man den Workflow kennen.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773406?srt=yes#m1773406 Stam 2020-07-15T07:13:41Z 2020-07-15T07:21:41Z Zeichencodierung ist falsch <p>Hallo Rolf, danke und für Antwort und stimmt, mit einem Workflow geht es besser. Ich versuche es mal und hoffe Du kommst damit zurecht.</p> <p><strong>Workflow:</strong></p> <ul> <li>Ich habe eine Softwarelösung die z.B. ein Angebot erstellt.</li> <li>Mit dieser Software kann ich vom Großhandel Artikel importieren.</li> <li>Für den Aufruf beim Großhandel öffne ich in meiner Software ein Webbrowser Form und starte meine HTML Seite z.B. www.meineseite.de/Grosshandel.html</li> </ul> <p>Code meiner HTML Seite für den Shopaufruf:</p> <pre><code class="block language-html"><span class="token doctype"><span class="token punctuation"><!</span><span class="token doctype-tag">doctype</span> <span class="token name">html</span> <span class="token name">public</span> <span class="token string">"-//W3C//DTD HTML 3.2 //EN"</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>Schnittstelle WKS<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span> <span class="token special-attr"><span class="token attr-name">onload</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript">document<span class="token punctuation">.</span>forms<span class="token punctuation">[</span><span class="token string">'wks'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">submit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wks<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wks<span class="token punctuation">"</span></span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://meingrosshandel.de/ids<span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>kndnr<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>...<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>name_kunde<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>...<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pw_kunde<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>....<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>version<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.3<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>5<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>5<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>action<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>WKS<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>3<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>3<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hidden<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hookurl<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://www.meineseite.de/idsconnect.php<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>256<span class="token punctuation">"</span></span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>256<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>form</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <ul> <li> <p>Im WebShop vom Grosshandel kann der Anwender seine Artikel in den Warenkorb legen. Dann kann er dort den Button „Warenkorb übertragen“ anklicken. Der Grosshandel ruft dann die HookUrl aus dem von mir übertragenen Formular auf und Schreibt seinen Warenkorb in ein Feld „Textarea“. Dieses Feld muss die id=“Warenkorb“ haben.</p> </li> <li> <p>Ich erhalte dann in dem Feld den Warenkorb: Muster Warenkorb Rückübertragung:</p> </li> </ul> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Warenkorb</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.muster.de/Shop-Anbindung/Warenkorb/<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.muster.de/Shop-Anbindung/Warenkorb/warenkorb_empfangen.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>WarenkorbInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Date</span><span class="token punctuation">></span></span>2020-07-14<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Date</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Time</span><span class="token punctuation">></span></span>17:22:39<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Time</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>RueckgabeKZ</span><span class="token punctuation">></span></span>Warenkorbrückgabe<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>RueckgabeKZ</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Version</span><span class="token punctuation">></span></span>2.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Version</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>WarenkorbInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Order</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>OrderInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>InquiryNo</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>InquiryNo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>OfferNo</span><span class="token punctuation">></span></span>1988783<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>OfferNo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>PartNo</span><span class="token punctuation">></span></span>TEST<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>PartNo</span><span class="token punctuation">></span></span> </code></pre> <ul> <li>Ich lese dann mit meiner Software das Feld aus. Alle Großhändler, die das Encoding ISO verwenden gehen auch, hier stimmen die Umlaute. Bei den andere die das <?xml version="1.0" encoding="utf-8"?> senden, stimmen in meiner Textarea die Umlaute dann nicht mehr.</li> </ul> <p><strong>Hier noch ein Auszug aus der Schnittstelle:</strong> 4.1 Warenkorbübernahme Shop zur Handwerkssoftware Über diese Funktion soll die Übernahme eines Warenkorbs aus dem Shop-System in die Handwerkssoftware realisiert werden. Für den Prozess wurden folgende Prozessschritte abgestimmt. a) Starten des GH-Shops aus der Handwerkssoftware in einem Browserfenster Beim Aufruf des GH-Shops soll eine automatische Anmeldung erfolgen. Hierfür werden bei der Anfrage die Parameter „Kundennummer“, „Benutzername“ und „Passwort“ übertragen. Zusätzlich ist der Parameter „Version“ zur Angabe der Version der Schnittstelle (ab Version 1.3) möglich. Die Zugangsdaten sollen den beim Anwender bereits bekannten Zugangsdaten im Shop-System entsprechen. Bei der Übertragung der Parameter soll die POST Variante (komplexere Implementierung aber unbegrenzte Parameterlänge) möglich sein. Die GET Variante wird auf Grund der nicht ausreichenden Länge der Parameter nicht unterstützt. ITEK GmbH 10.09.2013 Seite 10/29 IDS Schnittstelle Beim Aufruf der Shop-Anbindung muss im HTTP-Header der Content "text/html" angegeben werden. Weiterhin muss der Zeichensatz angegeben werden, um eine eindeutige Interpretation zu ermöglichen. Für die Formulardaten muss der enctype "multipart/form-data" angegeben werden. Die gleichen Festlegungen gelten auch beim Aufruf der Hook-URL. Der Zeichensatz der xml Struktur für den Warenkorb soll in der xml Deklaration angegeben werden. Wird nichts angegeben, so wird utf-8 genutzt. Es kann in jeder Anfrage nur ein Warenkorb übermittelt werden. Für die Übertragung wird die Nutzung von HTTPS empfohlen, grundsätzlich soll aber auch HTTP möglich sein. Die Rück-Kommunikation zur Handwerkssoftware soll über eine HOOK-URL erfolgen. Diese wird als Parameter beim Aufruf des GH-Shops übertragen. Zusätzlich kann der Parameter „Target“ angegeben werden. Hier wird das Target angegeben welches durch die Handwerkssoftware überwacht wird, um den Abschluss der RückKommunikation festzustellen. Das Target muss, nach Abschluss der Rück-Kommunikation, durch den Shop aktualisiert werden. Wird der Parameter nicht übertragen wird „TOP“ als StandardTarget genutzt. Die Festlegung, welche Aktion im GH-Shop aufgerufen werden soll, erfolgt über einen Aktionsparameter. Sollten für andere Aktionen weitere Parameter erforderlich sein, so werden diese in Abhängigkeit von der Aktion definiert. Falls beim Aufruf Fehler auftreten, sollen diese im Browserfenster angezeigt werden. Das genaue Fehlerhandling obliegt den einzelnen GH-Shops und wird hier nicht weiter betrachtet. Falls der GH-Shop ein Weiterarbeiten z. B. über eine manuelle Anmeldung ermöglicht, müssen die Aufrufparameter aus der Handwerkssoftware erhalten bleiben um den Abschluss des Prozesses zu ermöglichen. Hinweis: Beim Zugriff auf die Shop-Systeme ist zu beachten, dass es zu Problemen kommen kann, wenn in einem Shop-System mehrere Funktionen parallel gestartet werden.</p> <p>b) Übernahme des Warenkorbs Der übertragenen Warenkorb muss dem Schema „Warenkorb_empfangen.xsd“ entsprechen. Die Übernahme der Daten erfolgt als Übertragung eines Formulars an die HOOK-URL analog der OCI Schnittstelle.</p> <p>c) Schließen des GH-Shops Nach Abschluss der Verarbeitung muss das Browserfenster geschlossen werden und der Prozess ist abgeschlossen.</p> <p>Jetzt stellt sich für mich die Frage wie ich die unterschiedlichen Encoding in den Griff bekommen kann.</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773407?srt=yes#m1773407 Der Martin 2020-07-15T07:58:35Z 2020-07-15T07:58:35Z Zeichencodierung ist falsch <p>Hallo,</p> <blockquote> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Warenkorb</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.muster.de/Shop-Anbindung/Warenkorb/<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xsi:</span>schemaLocation</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.muster.de/Shop-Anbindung/Warenkorb/warenkorb_empfangen.xsd<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>WarenkorbInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Date</span><span class="token punctuation">></span></span>2020-07-14<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Date</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Time</span><span class="token punctuation">></span></span>17:22:39<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Time</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>RueckgabeKZ</span><span class="token punctuation">></span></span>Warenkorbrückgabe<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>RueckgabeKZ</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Version</span><span class="token punctuation">></span></span>2.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Version</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>WarenkorbInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Order</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>OrderInfo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>InquiryNo</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>InquiryNo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>OfferNo</span><span class="token punctuation">></span></span>1988783<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>OfferNo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>PartNo</span><span class="token punctuation">></span></span>TEST<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>PartNo</span><span class="token punctuation">></span></span> </code></pre> <ul> <li>Ich lese dann mit meiner Software das Feld aus. Alle Großhändler, die das Encoding ISO verwenden gehen auch, hier stimmen die Umlaute.</li> </ul> </blockquote> <p>also ist dein Shopsystem anscheinend auch in ISO-8859-x codiert.</p> <blockquote> <p>Bei den andere die das <?xml version="1.0" encoding="utf-8"?> senden, stimmen in meiner Textarea die Umlaute dann nicht mehr.</p> </blockquote> <p>Dann wird dir vermutlich nichts anderes übrigbleiben, als die encoding-Angabe aus der XML-Deklaration zu picken und, falls sie <em>nicht</em> auf "iso-8859-1" lautet, den gesamten XML-String <a href="https://www.php.net/manual/en/function.iconv" rel="nofollow noopener noreferrer">umzucodieren</a>.</p> <p>Live long and <s>pros</s> healthy,<br>  Martin</p> <div class="signature">-- <br> Home is where my beer is. </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773411?srt=yes#m1773411 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-07-15T09:47:20Z 2020-07-15T09:47:20Z Zeichencodierung ist falsch <p>@@Stam</p> <blockquote> <p>Code meiner HTML Seite für den Shopaufruf:</p> <pre><code class="block bad language-html"><span class="token doctype"><span class="token punctuation"><!</span><span class="token doctype-tag">doctype</span> <span class="token name">html</span> <span class="token name">public</span> <span class="token string">"-//W3C//DTD HTML 3.2 //EN"</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>3.2?? Wirklich? Wann kam HTML 4.0? 1997.</p> <p>Diese DOCTYPE-Angabe dürfte Browser in den Quirksmodus schicken – das sollte man nicht tun.</p> <p>Der <em lang="en">public identifier</em> ist noch dazu falsch. <code>-//W3C//DTD HTML 3.2 Final//EN</code> wär’s gewesen.</p> <p>Verwende <code><!DOCTYPE html></code> (wenn deine Seiten im Standardmodus denn richtig aussehen).</p> <p lang="en"> Stay hard! Stay hungry! Stay alive! <strong>Stay home!</strong></p> <div class="signature">-- <br> <em>“Turn off CSS. If the page makes no sense, fix your markup.”</em> —fantasai </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773413?srt=yes#m1773413 Rolf B 2020-07-15T12:06:55Z 2020-07-15T12:06:55Z Zeichencodierung ist falsch <p>Hallo Stam,</p> <p>ich kann nicht sagen, dass deine Erklärung meine Fragen beantwortet, mir fehlt zu viel Background.</p> <p>Wenn ISO-8859-1 bei Dir sauber ankommt, dann sollte der Hinweis mit utf8_decode für Dich hinreichend sein.</p> <p>Ich möchte nur darauf hinweisen, dass ISO-8859 eine Standardgruppe ist und ISO-8859-1 eigentlich veraltet ist. Er wurde zu ISO-8859-15 aktualisiert (mit € Zeichen). Codepage 1252 ist ähnlich zu ISO-8859-1/-15, aber nicht identisch. Im Bereich der deutschen Umlaute sind die Codepages gleich, ob Du auch andere Akzentzeichen übertragen können musst hängt von Deiner Anwendung ab.</p> <p><a href="https://de.wikipedia.org/wiki/ISO_8859" rel="nofollow noopener noreferrer">Infos in der Wikipedia</a></p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773409?srt=yes#m1773409 dedlfix 2020-07-15T08:08:25Z 2020-07-15T08:08:25Z Zeichencodierung ist falsch <p>Tach!</p> <blockquote> <p>Dann wird dir vermutlich nichts anderes übrigbleiben, als die encoding-Angabe aus der XML-Deklaration zu picken und, falls sie <em>nicht</em> auf "iso-8859-1" lautet, den gesamten XML-String <a href="https://www.php.net/manual/en/function.iconv" rel="nofollow noopener noreferrer">umzucodieren</a>.</p> </blockquote> <p>Im Falle der Umkodierung von UTF-8 nach ISO-8859-1/Windows-1252 kann man auch die Funktion utf8_decode() nehmen.</p> <p>Egal welchen Weg man nimmt, weil Unicode viel mehr Zeichen kennt als ISO-8859-1/Windows-1252, ist mit Datenverlust ist zu rechnen, wenn solche nicht in ISO-8859-1/Windows-1252 enthaltene Zeichen in der Quelle enthalten sind. Diese Zeichen werden dann zu einem Fragezeichen konvertiert.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773635?srt=yes#m1773635 Stam 2020-07-22T09:46:41Z 2020-07-22T09:54:24Z Zeichencodierung ist falsch <p>Hallo Martin, danke für die Antwort. Ich habe jetzt mal ein PHP gebastelt. Leider bekomme ich den Text nicht konvertiert.</p> <p>Hier mein aktueller Code:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$einString</span> <span class="token operator">=</span> <span class="token variable">$_REQUEST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"warenkorb"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$suchwort</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"ISO-8859-1"</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$position</span> <span class="token operator">===</span> <span class="token constant boolean">false</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"UTF8 Warenkorb"</span><span class="token punctuation">;</span> <span class="token function">iconv</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"UTF-8"</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"ISO-8859-1"</span><span class="token punctuation">,</span> <span class="token variable">$einString</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"ISO-88xxxxx Warenkorb"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>IDS-SCHNITTSTELLE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Warenkorb<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>textarea</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>warenkorb<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token prolog"><?php echo htmlspecialchars($einString, ENT_QUOTES); ?></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>textarea</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>In der Iconv Zeile stimmt nicht, wenn diese entfernt ist geht es wieder. Grüße und Danke</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773449?srt=yes#m1773449 Julius 2020-07-15T20:29:29Z 2020-07-15T20:29:29Z Zeichencodierung ist falsch <p>Hallo 1unitedpower,</p> <blockquote> <blockquote> <p>Text aus unbekannten Quellen muss man immer maskieren.</p> </blockquote> <p>Text <s>aus unbekannten Quellen</s> muss man immer maskieren.</p> </blockquote> <p>M.m.n. gehört da noch ein „kontextgerecht“ hin, um es noch klarer zu bekommen.</p> <p>Gruß<br> Julius</p> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773414?srt=yes#m1773414 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-07-15T12:50:06Z 2020-07-15T12:50:06Z Zeichencodierung ist falsch <p>@@Rolf B</p> <blockquote> <p>Ich möchte nur darauf hinweisen, dass ISO-8859 eine Standardgruppe ist und ISO-8859-1 eigentlich veraltet ist. Er wurde zu ISO-8859-15 aktualisiert (mit € Zeichen).</p> </blockquote> <p>Dann möchte ich noch darauf hinweisen, dass ISO-8859-15 auch veraltet ist. UTF-8 ist angesagt (mit <em>allen</em> Zeichen).</p> <blockquote> <p>Codepage 1252 ist ähnlich zu ISO-8859-1/-15, aber nicht identisch. Im Bereich der deutschen Umlaute sind die Codepages gleich, ob Du auch andere Akzentzeichen übertragen können musst hängt von Deiner Anwendung ab.</p> </blockquote> <p>CP-1252 und ISO-8859-1/-15 decken westeuropäische und nordeuropäische Sprachen ab; mitteleuropäische aber nicht.</p> <p lang="en"> Stay hard! Stay hungry! Stay alive! <strong>Stay home!</strong></p> <div class="signature">-- <br> <em>“Turn off CSS. If the page makes no sense, fix your markup.”</em> —fantasai </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773469?srt=yes#m1773469 Rolf B 2020-07-16T13:56:10Z 2020-07-16T13:56:10Z Zeichencodierung ist falsch <p>Hallo 1UP + Julius,</p> <p>fixed</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/jul/14/zeichencodierung-ist-falsch/1773644?srt=yes#m1773644 Rolf B 2020-07-22T11:36:33Z 2020-07-22T11:36:33Z Zeichencodierung ist falsch <p>Hallo Stam,</p> <p><a href="https://www.php.net/manual/en/function.iconv.php" rel="nofollow noopener noreferrer">RTFM</a></p> <p>iconv ist eine Funktion. Du musst das Ergebnis entgegennehmen, der Wert der Variablen im 3. Parameter wird nicht überschrieben.</p> <p>Und Du musst prüfen, ob die Rückgabe FALSE ist. Wenn ja, gab's einen Fehler.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div>