WernerK: sqlsrv_connect ohne UTF-8, Umlaute Problem

Beitrag lesen

Hallo,

eine Webanwendung zeigt Daten aus einer MS SQL Db an. Diese Daten haben auch deutsche Umlaute wie Ö, ü usw. Die Verbindung wird mit sqlsrv_connect hergestellt. Ich hatte zuerst ein CharacterSet mit UTF-8

//vorher mit UTF-8
//$connectionInfo = array( "Database"=>"myDB", "UID"=>"myName", "PWD"=>"myPW", "CharacterSet" => "UTF-8");
$connectionInfo = array( "Database"=>"myDB", "UID"=>"myName", "PWD"=>"myPW");
$con = sqlsrv_connect( $serverName, $connectionInfo);

Bei der betreffenden PHP Datei showData.php zur Anzeige der Daten hatte ich im header <meta charset="utf-8" /> drin stehen und alles war gut. (Umlaute wurden richtig angezeigt.)

Jetzt kann man die Daten aber auch als CSV Datei downloaden und diese hat dann auch UTF-8 als Kodierung. Dies wurde jetzt bemängelt weil ein Doppelklick der CSV Excel öffnet und die Umlaute nicht richtig darstellt. Man muss also vorher ind er CSV die Kodierung umstellen.

Daher habe ich nun mal in der Connection das UTF-8 entfernt und auch in der showData.php das charset=utf-8 entfernt.

Ich nahm jetzt an, dass die Umlaute richtig angezeigt werden, dem ist aber leider nicht so. Vermutlich muss man alle Daten nochnals mit utf8_encode behandeln?

Ich wundere mich nur, denn ursprünglich ist das eine uralte Webanwendung vom Jahr 2000 in PHP4 geschrieben, mit einem alten IIS und Windows Server und alter SQL DB. Und damals gab es angeblich keine Probleme mit Umlauten.

Die Frage ist nun: Wie am besten verfahren, damit Daten richtig angezeigt werden und die CSV Datei in ANsi ist?

Gruss

Werner