VB -> SQL -> PHP/HTML, Probs mit Sonderzeichen

Blutschlumpf

Fleet Admiral
Registriert
März 2001
Beiträge
20.462
Ich will gerade was von VB auf PHP umstellen und will die Daten übernehmen.
Hab folgendes Szenario:
1. Ich lese ne Datei mit VB ein.
2. VB macht SQL Code draus a la "INSERT INTO blabla"
3. Ich paste den Code in die Mysql Konsole.
4. PHP liest aus SQL.

Jetzt hab ich Probleme sobald Sonderzeichen (nur ä,ö,ü,&,?) ins Spiel kommen.
Wenn ich nach Punkt 3 in der SQL Konsole ein "Select * from" mache werden die Zeichen noch korrekt angezeigt.

Sobald PHP die aus der DB ließt, sind die Zeichen im Eimer.
Ich tippe mal, dass es kein Anzeigeproblem ist, da im HTML Code die Sonderzeichen auch nicht angezeigt werden.

Nun weiß ich da nicht wirklich weiter.
Hab mal überlegt, der SQL Code vorm pasten mit nem HEX-Editor zu "fixen", dazu müsste ich aber wissen, was PHP da überhaupt erwartet.
Oder gibts ne Möglichkeit wie ich verändere, was PHP da einließt ?
Das müsste nur ein einziges mal geschehen, da ich die Daten dann eh mit PHP bearbeiten muss und korrekt weiterspeichern könnte.
Ideal wär natürlich wenn ich das umgehen könnte mit nem "charset=xyz" im HTML.

Jemand ne einfache, schnelle und idiotensichere Idee ? ;)
 
Ich muss zwar sagen, dass ich dich nicht verstehe, aber wenn du Probleme mit Sonderzeichen hast, kann ein entwertender Backslash "\" schon mal Wunder wirken...
Mehr hab ich bei deiner Ausführung irgendwie nicht mitgekriegt...sorry!

Greets - SK
 
Ums einfach auszudrücken:
Wenn du in der mysql Console ne db und ne tabelle erstellt und mit
Code:
INSERT INTO Tabelle1 (Spalte1) VALUES ("Test123äöü");
nen datensatz einfügst.
und unter php mit
Code:
select * from tabelle1;
den Satz abfragst und mit echo ausgibst, dann kommt da nicht Test123äöü raus, sondern Test123 + irgendwelche anderen Zeichen.

Mit backslash klappt auch nicht. Wäre hier auch ehrlich gesagt ziemlich unlogisch.
 
Das klingt ziemlich eindeutig nach einem Codepage-Problem. VB wird wohl die 1252 verwenden, und PHP möglicherweise Unicode oder UTF8. Wie man das in PHP umstellt, kann ich Dir leider nicht sagen. Allerdings könntest Du Dir ein Workaround überlegen, z.B. Umlaute HTML-kodiert reinschreiben : &auml etc... (ja ich weiß, dass man das "eigentlich" nicht mehr verwenden soll :-) ) und dann in PHP wieder zurückwandeln.
 
Wenn ich raten müsste: Es kommt sowas wie Test123auml;etc. raus?
Das wären dann HTML-Sonderzeichen...

Versuch's mal damit: ($text ist der ausgelesene String)
Code:
echo htmlspecialchars($text);
oder
Code:
echo htmlentities($text);

Denke, dass das zweite helfen könnte...

Greets - SK
 
@enforcer:
ist ein Problem ohne "&" Zeichen ;)
Hab schonmal überlegt ü in ue umzuwandeln, aber das ist auch nicht das wahre.

@Schattenkanzler:
ne, es kommt für ein ä Gänsefüßchen unten raus, für ö Gänsefüßchen oben, ü fällt komplett weg.
htmlspecialchars und htmlentities zeigen das gleiche an.

Gibts in php ne funktion um sich den Hex-Wert von etwas anzeigen zu lassen bzw das Zeichen für nen Wert irgend reinzuschrieben ?
 
Also, was fällt mir da spontan noch dazu ein?

1. Fehlerbehandlungslevel:

1.1: mittels
Code:
echo error_reporting(0);
die aktuelle Fehlermeldungsschwelle auslesen und merken!
1.2: mit
Code:
error_reporting(E_ALL)
alle Meldungen anzeigen lassen. Später wieder zurücksetzen.
Vielleicht kommst du so dahinter.


2. Alles mal posten, damit man mal einen Blick drauf werfen kann...wenn das ok ist für dich!

Mehr fällt mir dazu leider nicht mehr ein - ich selbst hatte nie Probleme.

Was du noch versuchen könntest: Setz doch mal in deine Quelle anstatt der Zeichen, die falsch angezeigt werden, die Resulate ein.
Also z.B. " für ö oder so...

Viel Glück - SK
 
Das mit dem ? und dem & hatte doch geklappt, mein Fehler, hab die Umlaute jetzt ersetzt durch ae, oe, ue und ? durch ss.
 
Schattenkanzler schrieb:
echo error_reporting(0); ... die aktuelle Fehlermeldungsschwelle auslesen und merken!

Wie wäre es einfach mit
PHP:
<?
$olderrlvl = error_reporting(0);
error_handler();
error_reporting($olderrlvl);
?>

@ Blutstrumpf: Lässt du es dir von PHP auf einer Webseite ausgeben oder benutzt du PHP bzw den Textmodus-MySQL-Client auf der Konsole.
Wenn letzteres: Versuch mal das mit der Webseite, dein Problem klingt auf Anhieb nach den Verschiebungen zwischen ANSI (Windows) und ASCII (DOS).
 
Jo, das wars !

Hab jetzt mal nicht in die Konsole gepastet sondern mit
Code:
mysql -u root -p < c:\dateixy.sql

direkt eingelesen. Dann klappts auch mit dem Nachbarn. :rolleyes:

Wo wir gerade dabei sind, da gibts doch in mysql nen Befehl a la verarbeite Datei xy, wie hieß der nochmal ?
 
Also... Das was du machen möchtest klappt nur so, wie du es auch machst.
Für reine Datenfiles gäbe es noch LOAD DATA INFILE, das funktioniert aber nur mit Dateien im CSV-Stil
 
</Life> schrieb:
Wie wäre es einfach mit
PHP:
<?
$olderrlvl = error_reporting(0);
error_handler();
error_reporting($olderrlvl);
?>

@ Blutstrumpf: Lässt du es dir von PHP auf einer Webseite ausgeben oder benutzt du PHP bzw den Textmodus-MySQL-Client auf der Konsole.
Wenn letzteres: Versuch mal das mit der Webseite, dein Problem klingt auf Anhieb nach den Verschiebungen zwischen ANSI (Windows) und ASCII (DOS).

Ja, das wäre dann das selbe in grün, oder? Nur ein wenig einfacher :D

Aber wo wir grad dabei sind:
</Life> schrieb:
*hüstel*

Greets - SK
 
Ich war grad am Nachdenken und hab dann ein Mittelding zwischen dem deutschen "Schlumpf" und dem französischen "Stroumpf" (oder so ähnlich Oo) geschrieben... Du willst dich jetzt hier wirklich über Schreibfehler unterhalten? Dann fass dich mal an die eigene Nase: "das selbe" gibt es nicht. Entweder "das Selbe" oder "dasselbe".
 
Hehe, ich liebe diese Diskussionen/Streitereien...einfach nur herrlich...

Na ja, back 2 Topic würd ich sagen - scheint sich aber schon erledigt zu haben!

Greets - SK
 
Hallo Leute,

hänge gerade an einem ähnlichen Problem, dabei geht es mir um die Performance.

Und zwar wird Text für ein Newssystem über mySQL-Datenbank verwaltet und mittels php ausgegeben.

Jetzt frage ich mich ob ich den Text beim insert in die Datenbank schon mit htmlentities() umwandel und dann so speichere oder ob es besser ist den Text roh zu speichern und jedesmal erst umzuwandeln wenn jemand auf die Seite klickt und er ausgegeben wird?

Das dumme wenn ich ihn umgewandelt speichere muss ich ihn ja für jede Bearbeitung zurück-umwandeln.


Hat jemand eine Ahnung wie es allgemein damit gehalten wird?
 
Zuletzt bearbeitet:
Zurück
Oben