Ich erzeuge eine XML-Datei mit PHP mit DomDocument und ich muss mit asiatischen Zeichen umgehen. Ich ziehe Daten vom MSSQL2008-Server mit dem pdo_mssql-Treiber und wende utf8_encode() auf die XML-Attributwerte an. Alles funktioniert gut, solange es keine Sonderzeichen gibt.Encoding SQL_Latin1_General_CP1_CI_AS in UTF-8
Der Server ist MS SQL Server 2008 SP3
Die Datenbank-, Tabellen- und Spaltensortierung werden alle SQL_Latin1_General_CP1_CI_AS
Ich bin mit PHP 5.2.17
Hier mein PDO Objekt ist:
$pdo = new PDO("mssql:host=MyServer,1433;dbname=MyDatabase", user123, password123);
Meine Abfrage ist eine grundlegende SELECT.
Ich weiß, Speichern von Sonderzeichen in SQL_Latin1_General_CP1_CI_AS Spalten ist nicht toll, aber im Idealfall wäre es schön, es ohne Änderung zu arbeiten, weil andere Nicht-PHP-Programme bereits diese Spalte verwenden und es funktioniert gut. In SQL Server Management Studio kann ich die asiatischen Zeichen richtig sehen.
Unter Berücksichtigung aller oben genannten Details, wie soll ich die Daten verarbeiten?
Haben Sie ['utf8_encode()'] (http://ca3.php.net/manual/en/function.utf8-encode.php) ausprobiert? Laut Bedienungsanleitung: 'kodiert eine ISO-8859-1-Zeichenfolge zu UTF-8'. –
Natürlich mache ich das gerade, aber die asiatischen Zeichen erscheinen als "?". Selbst wenn ich nur SELECT ausführe und dann die Daten in eine Datei (utf8_encode oder nicht) lege, enden die asiatischen Zeichen als "?" in der Datei. – SGr
Es überrascht mich wirklich, dass Sie tatsächlich asiatische Zeichen in 'LATIN1' kodieren können. 'LATIN1' dient nur zur Kodierung europäischer Zeichen ... –