PHP zeichensatz problem

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php-zeichensatz-problem_244361/page_1 - zur Vollversion wechseln!


Umlüx schrieb am 22.10.2015 um 14:34

folgendes problem:
ich hab ortsnamen in einer datenbank, z.b: Na Poříčí
die muss ich auslesen und per xml (utf8) in ein anderes tool schieben.

ich hab aber arge probleme mit dem zeichensatz, bzw der konvertierung dessen. denn der string sieht eigentlich so aus:
code_208101.jpg
den gatsch musste ich jetzt direkt als bild reinhängen ums euch zeigen zu können, denn die forensoftware stellts korrekt dar :) sind das numeric html entities? aber nicht nur?

ich hab mich jetzt schon mit html_entity_decode und utf8_encode gespielt, aber ich komm auf keinen grünen zweig...


Nico schrieb am 22.10.2015 um 14:48

http://www.utf8-chartable.de/unicod...icodeinhtml=dec

andere php funktion:
http://php.net/manual/en/function.iconv.php


Umlüx schrieb am 22.10.2015 um 14:56

iconv hilft mir leider auch nicht weiter, da ich anscheinend einen mischmasch an zeichensätzen da drin hab. ich könnt mir dann zwar die html entities übersetzen, aber er würd mir die >í< verhauen


XeroXs schrieb am 22.10.2015 um 15:03

Code: PHP
$returnValue = html_entity_decode('Poříčí', ENT_COMPAT, 'UTF-8');  //(forum ersetzt das ;) aber da steht dein originalstring drinnen)  
ergibt bei mir
$returnValue = Poříčí
.. und das ist ja jetzt schon utf-8.. einfach so schreiben.


Umlüx schrieb am 22.10.2015 um 15:22

wieso hauts bei mir nicht hin...

$xml->writeElement('Street', html_entity_decode($STRASSE,ENT_COMPAT,"utf-8"));
ergibt dann 2_208102.jpg


AdRy schrieb am 22.10.2015 um 15:48

Umlüx wo liest/siehst du das falsche Ergebnis? Es kann einen Unterschied machen ob du es im Browser, Datei, windows konsole doer linux konsole ausliest/anzeigst. Da kann noch was auf dem weg dreinpfuschen.


Umlüx schrieb am 22.10.2015 um 16:37

das php wirft mir eine XML datei damit aus
sowohl wenn ichs mit z.b. PSPad ansehe, als auch nach dem import ins zielsystem (eine web applikation mit oracle db dahinter) sehe ich die gleichen 'schiefen' zeichen.
umlaute und der einfache rest passen alle.


COLOSSUS schrieb am 22.10.2015 um 16:50

Erwartet der Viewer, mit dem du dir dein Resultat ansiehst, denn auch tatsaechlich Unicode in UTF-8-Kodierung?


Umlüx schrieb am 22.10.2015 um 16:55

der xml importer der applikation erwartet utf-8

ich merke gerade, der string zerreist mir überhaupt die komplette codierung des XML files. bei datensätzen mit diesem problem passen danach die umlaute im xml auch nicht mehr, alle anderen sind aber ok.
und es scheint vorwiegend die hacecks zu betreffen.


AdRy schrieb am 22.10.2015 um 17:12

Dann wird das Problem wohl darin liegen wie du das XML file schreibst, wenns dort schon nicht richtig drinnen steht. Wie erstellst/schreibst du das XML bzw. hast du beim erstellen des Files das utf-8 encoding gesetzt?


Umlüx schrieb am 23.10.2015 um 08:02

im moment siehts in etwa so aus:

Code: PHP
header("Content-type: application/xml; charset=UTF-8"); 
header("Content-Disposition: attachment; filename=\"export.xml\"");
// select der daten aus einer MySQL (Latin1)
$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->startDocument('1.0" encoding="UTF-8');
...
 $xml->startElement('Address');
  $xml->writeElement('Street', html_entity_decode($strasse, ENT_COMPAT, 'UTF-8'));
  $xml->writeElement('PostalCode', $plz);
  $xml->writeElement('City', utf8_encode($ort));
 $xml->endElement();
...
$xml->endDocument();
print_r($xml->outputMemory());
$xml->flush();
funktioniert alles prima. ausser bei solche einträgen wie dem erwähnten problemfall. sowohl die datenbank, als auch das zielsystem sind übrigens nicht von mir und daher nicht beeinflussbar.


AdRy schrieb am 23.10.2015 um 13:54

Vl wirds nur im forum faslch dargestellt:
Du hast:

Code: PHP
$xml->startDocument('1.0" encoding="UTF-8');

Es gehört afaik so:
Code: PHP
$xml->startDocument('1.0', 'UTF-8');

oder du könntest DOMDocument() statt XMLWriter probieren.


Umlüx schrieb am 23.10.2015 um 14:09

nein das passt schon so. mit 2 getrennten argumenten hab ich grobe probleme. und bin laut php.net nicht der einzige.
und wie gesagt, es stimmt sonst auch alles. andere sonderzeichen und umlaute etc.. funktionieren problemlos.
nur diese numeric html entities(?) nicht.


XeroXs schrieb am 23.10.2015 um 14:11

php ist echt :bash:


Umlüx schrieb am 23.10.2015 um 14:22

Zitat von XeroXs
php ist echt :bash:

this

ich brech das glaub ich ab. ich versch... zuviel zeit damit. es sind ein paar dutzend datzensätze, die müssen sie dann halt von hand korrigieren...

dennoch danke an alle




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025