Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit PHP ANSI Dateien schreiben

Frage Entwicklung PHP

Mitglied: Niranda

Niranda (Level 1) - Jetzt verbinden

21.04.2011, aktualisiert 08:50 Uhr, 4690 Aufrufe, 1 Kommentar

Mit PHP aus UTF8-Code eine ANSI-Datei schreiben - Umlaute sind nicht korrekt.

Hallo,

ich habe ein ziemlich verwirrendes Problem.
Um das ganze mal zu verdeutlichen:

Es gibt eine Perlschnittstelle. Rufe ich das Perlscript über den Browser mit den GET-Parametern "?id=12345&splitter=<->" auf, so werden mir im Browser die Datensätze aus einer Datenbank zur ID "12345" angezeigt:
Spaltenname1<->Wert1
Spaltenname2<->Wert2
Spaltenname3<->Wert3
... usw ...

Mit PHP rufe ich dieses Perlscript auf und lese die daraus entstandene Seite aus - erhalte dabei (wahrscheinlich) UTF8-Basierte Werte, die ich in entsprechende Variablen/Arrays abspeichere.
Nun wird mit PHP eine Vorlage (Textdatei) im ANSI-Format eingelesen und Zeilenweise komplett in ein Array gespeichert.
Dieses Array wird dann mit den Werten (welche vom Perl-Script kamen) bearbeitet (einige Elemente kommen hinzu, andere Elemente werden nur leicht abgeändert).
Das daraus entstandene "neue" Array wird dann in eine neue Textdatei geschrieben - wieder entspricht ein Element einer Zeile. Diese finale Datei muss ANSI-Codiert sein!

Soweit funktioniert das alles auch wunderbar - allerdings werden Umlaute wie "Ü" und "ö" wie folgt in der finalen Datei dargestellt:
�

Egal welcher Umlaut, es kommt immer statt des Umlautes "�" heraus.
Die Umlaute in der eingelesenen Vorlage bleiben aber vorhanden. Nur die Werte aus der Datenbank, welche hinzugefügt werden, weisen diese Problematik auf.

Problemlösung:
Da habe ich versucht, alle Werte, welche aus der Datenbank kommen, durch einen (PHP)-Konverter zu schubsen mit den PHP-Hauseigenen Funktionen "UTF8_encode" und dem Gegenstück "UTF8_decode" - ohne Erfolg.
Dann habe ich "htmlentities" benutzt, um das ganze HTML-Kompatibel zu formatieren und dieses mit "html_entity_decode" im Windows1252-Format wieder rückgängig gemacht - also nur ein anderer Weg, um:
ä -in-> &auml; -in-> ä
zu konvertieren:

01.
function encode_conv($var, $enc_out = "Windows-1252", $enc_in = "utf-8") { 
02.
    $var = htmlentities($var, ENT_QUOTES, $enc_in); 
03.
    $var = html_entity_decode($var, ENT_QUOTES , $enc_out); 
04.
	 
05.
    return $var
06.
}
Das Problem besteht fort - ich finde einfach keine Lösung, vllt jemand von euch?
Ich wäre zu tiefst dankbar!

Grüße,
Nira

PS:
Konvertiere ich die aus der Datenbank kommenden Werte direkt im Perl-Script mit UTF8-encode (Encode-Modul), so glaube ich "wahren" UTF8 Strings zu erhalten... diese aber wieder zurückzukonvertieren (decode) oder nochmals zu codieren (encode) mit jeweils UTF8 bringt wieder irgendwelchen Blödsinn heraus...
Mitglied: dog
21.04.2011 um 12:54 Uhr
erhalte dabei (wahrscheinlich) UTF8-Basierte Werte,

Wahrscheinlich hilft nicht weiter.
Nimm wget oder curl und speicher die Seite in eine Datei.
Dann öffnest du das in Notepad++ und gehst die Kodierung so lange durch bis die Umlaute sichtbar sind (natürlich gibt es sich überlagernde Zeichensätze).
Anstatt utf8_decode o.Ä. benutzt du dann die iconv Funktion.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
Outlook 2007 legt ost-dateien offenbar immer im ANSI-Format an (3)

Frage von coltseavers zum Thema Outlook & Mail ...

Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien mit vorgegebener Größe erstellbar? (3)

Frage von Stefan007 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...