Free Trial

Forum - Deutsch

Suchen Sie nach Antworten, stellen Sie Fragen und teilen Sie Ihr Alteryx-Wissen.

ODBC - Chartset ändern bei odbc_connect

helpme
Meteoroid

Hallo Zusammen

 

Ich weiss nicht, ob ich hier richtig bin.

 

Ich habe bisher alles mit PHP und ODBC gemacht. Nun wollte ich meine Homepage zeigemäss machen und habs mit WordPress erstellt.
soweit alles OK
Ich habe eine PHP (ehemalige Seite) ins WP includiert. Das includieren funktioniert auch gut. Nur werden keine Sonderzeichen angezeigt.

Rufe ich die ehemalige Seite direkt ohne WordPress auf wird es korrekt angezeigt.

Die Daten welche bei der externen Seite angezeigt werden stammen aus einer odbc_connect Schnittstelle, welche die Daten aus einer Access Datenbank holt.
Gemäss anderen Foren, welche ich auch gefragt habe, sagten was con falschem charset.

Nun meine Frage, wie kann ich bei einer odbc_connect den charset ändern von io8859-1 auf utf-8? Den bisher habe ich nie chartset angeben müssen, es wurde alles korrekt angezeigt.


Original Datei
Includiert

 

Code in PHP Datei.

 $conn = odbc_connect($_DSN,$_User, $_PW) or die("Verbindung fehlgeschlagen"); $SQL1 = "SELECT * FROM Tabelle "; $SQL1R = odbc_exec($conn, $SQL1); while($SQL1Z= odbc_fetch_array($SQL1R))  { echo $SQL1Z["typ"]; } 

 

11 ANTWORTEN 11
grossal
15 - Aurora
15 - Aurora

Hi @helpme,

 

grundsätzlich würde ich vermutlich sagen: Du bist hier nicht richtig, da ich nicht erkennen kann, inwiefern das mit Alteryx zusammenhängt, da du dies an keiner Stelle erwähnst. 

 

Ich mag dir jedoch trotzdem versuchen zu helfen. In der PHP-Doku zu odbc_connect konnte ich nicht wirklich etwas dazu finden, jedoch bin ich auch zwei interessante Beiträge gestoßen.

 

Im ersten Beitrag werden einfach weitere Parameter übergeben, dies sieht dann wie folgt aus: 

 

$con = odbc_connect("DRIVER={Easysoft ODBC-SQL Server};Server=192.0.2.1:1433;Database=MyCyrillicDB;Client_CSet=UTF-8;" . "Server_CSet=Windows-1251", "sa", "easysoft");

 

Relevant für dich sind die beiden Parameter Client_CSet und Server_CSet.

 

 

Alternativ könnte dir auch dieser Stackoverflow Beitrag helfen. Hier wird das ganze nicht direkt in der Connection, sondern bei der Execution angegangen.

 

//top of your script

odbc_exec($conn, "SET NAMES 'CP850'");
odbc_exec($conn, "SET client_encoding='CP850'");

 

Alternativ und das wird in dem Beitrag auch beschrieben, bleibt dir natürlich auch die Möglichkeit es mit iconv("io8859-1","UTF-8", $string) zu konvertieren. Diese Möglichkeit müsste auch unabhängig von der Connection funktionieren.

 

 

Viele Grüße und ein schönes Wochenende

Alex

helpme
Meteoroid

Vielen Dank für die beiden Typs.

Leider funktionieren die beiden nicht. Es wird im WP immer noch nicht korrekt angezeigt.

grossal
15 - Aurora
15 - Aurora

Was spricht eigentlich dagegen den Beitrag direkt in die WP-Content Datenbank zu schreiben?

Connecte dich auf die Datenbank und trage den Inhalt in die www_posts-Tabelle ein oder spricht etwas dagegen?

 

grossal_1-1591456736778.png

 

 

Alternativ könntest du doch auch einfach den Content (incl. HTML und ggf. Inline-CSS) kopieren und ihn über den Text-Editor direkt als neuen Beitrag einfügen:

 

grossal_0-1591456656603.png

 

 

helpme
Meteoroid

Wie meinst du das

Die externe Seite als WP Seite zu erstellen und den Inhalt hinein kopieren?

Wäre zwar möglich, aber wenn ich was im Kundenstamm (MS-Access) ändere, müsste ich es eben so wieder auch bei WP anpassen. Darum habe ich diese includiert.

Würde WordPress die Codierung der externen Seite korrekt intepretieren wärs kein Problem

--

Vor dem ich meine Seite mit WP erstellt habe, hatte ich alles im PHP selbst geschrieben, aber die war eben nicht smartphone tauglich. Darum habe ich sie neu erstellt mit WP.

Ich möchte aber gerne gewisse inhalte (Seiten) von meiner bisherigen Homepage übernehmen und so direkt aus der MS-Datenbank ins WP integrieren.

grossal
15 - Aurora
15 - Aurora

Warum nutzt du nicht die Möglichkeit mit iconv bei der ursprünglichen Seite? Dann ist sie schon UTF-8 wenn du sie von Wordpress einließt.

helpme
Meteoroid

würde ich ja gerne, dass die ursprüngliche Seite mit UTF-8 auch funktioniert.

WIe muss ich dies mit iconv den machen? Habe mit incov noch nie gearbeitet.

grossal
15 - Aurora
15 - Aurora

iconv ist letztendlich eine einfache Konvertierungsmethode, ähnlich wie ToString in anderen Programmiersprachen. Die Methode hat dabei 3 Parameter:

 

iconv ( string $in_charset , string $out_charset , string $str ) : string

 

in_charset was in deinem Fall wohl 'io8859-1' ist.

out_chartset was dann 'UTF-8' sein müsste

und $str was dein Text (der konvertiert werden soll) ist.

 

Das ganze liefert dir dann einfach einen string zurück.

 

Du könntest deinen Content daher wie folgt konvertieren:

$content = iconv("io8859-1","UTF-8", $content)

//falls io8859-1 auch die echte Codierungsbezeichnung ist, aber es klingt eigentlich nicht schlecht.

 

 

helpme
Meteoroid

Muss ich aber nicht inconv für alle Spalten durchführen?

Kann ichs auch auf die ganze Tabelle anwenden?

grossal
15 - Aurora
15 - Aurora

Ich bin leider kein PHP-Experte, daher würde ich es einfach ausprobieren 😃

Beschriftungen