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, 4715 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
Ä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 ...

Windows 10
gelöst Werden Dateien beim Ersetzen wirklich überschrieben? (3)

Frage von Nexder zum Thema Windows 10 ...

Heiß diskutierte Inhalte
DSL, VDSL
gelöst DSL 200m verlängern (15)

Frage von Angela44 zum Thema DSL, VDSL ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...

Windows Server
SBS 2011 Standard virtualisieren (11)

Frage von HeinrichM zum Thema Windows Server ...

Exchange Server
gelöst DHCP Sever MS Server 2012 Problem (10)

Frage von Florian86 zum Thema Exchange Server ...