117643
Goto Top

Codierung für fwrite

Guten Mittag miteinader,
ich habe ein Wordpress-Plugin für Woocommerce geschrieben welches eine CSV mit erzeugen soll, dies klappt auch, ich kann die Datei wunderbar mit einem Editor öffnen und sehe alle Umlaute korrekt.

Leider sieht das Buchhaltungsprogramm die Umlaute aber anders und kommt nicht mit der Codierung zurecht. Aus einem einfach ä wird nun ein ä

Die BuHa ist eine normale Windows-Anwendung und erwartet ASCII.
Die interne iconv Kodierung steht auf ISO-8859-1, ich habe keinen root-zugriff auf den Server.


Wie bekomme ich dies geschickt ans laufen?


Grüße Michael

Content-Key: 249055

Url: https://administrator.de/contentid/249055

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: LordGurke
Lösung LordGurke 13.09.2014, aktualisiert am 23.09.2014 um 10:50:20 Uhr
Goto Top
Wenn du die Daten in die Datei schreibst, müsstest du sie dann vorher am Besten durch iconv() schicken.
Ggf. wäre der "//TRANSLIT"-Teil bei der Zielkodierung noch halbwegs wichtig, um nicht in ISO darstellbare Zeichen zu umschreiben.
Mitglied: 117643
117643 16.09.2014 um 08:59:52 Uhr
Goto Top
$fp = fopen(ABSPATH.'bestellungen/test.txt', "w+");
fwrite($fp, iconv(iconv_get_encoding("output_encoding"), 'ASCII//TRANSLIT', 'äüö'));
fclose($fp);

erzeugt leider nur folgendes:
??? 1/4 ??
Mitglied: LordGurke
LordGurke 17.09.2014 um 00:39:51 Uhr
Goto Top
In welchem Encoding sind denn die PHP-Dateien selbst?
Eventuell hilft es dir ja, das Quell-Encoding hardcoded anzugeben oder alternativ mit mb_detect_encoding() abzufragen (das ist bei UTF-8 zuverlässiger).
Mitglied: 117643
117643 17.09.2014 um 09:24:33 Uhr
Goto Top
Zur Info Vorab, ich arbeite mit Notepad++

Wenn ich die Datei als UTF-8 speicher erhalte ich: ??? 1/4 ??

Wenn ich die Datei als ASCII speicher erhalte ich:
???

Hast du sonst ein beispielcode / datei mit der ich testen könnte?

Hab nun das hier:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$ursprung = 'äöü';

echo "Ursprungscodierung: ". mb_detect_encoding($ursprung);

$string = iconv(mb_detect_encoding($ursprung), 'ASCII//TRANSLIT', $ursprung);

echo "Nach Iconv: ". mb_detect_encoding($string);

$fp = fopen('test.txt', "w+");
fwrite($fp, $string );
fclose($fp);
Mitglied: 117643
117643 23.09.2014 aktualisiert um 10:50:42 Uhr
Goto Top
So irgendwie war das Erkennen der benutzten Codierung wohl das Problem... habe über die Konsole mit ein paar linux-Tools die Dateien untersucht die ich erzeuge bzw. die mir vorgebene werden. Benutze nun icov mit festen Paratemern und das klappt wunderbar face-smile Danke