PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Codierung: Unicode -> UTF-8


SuNflOw1991
24.03.2012, 20:48:00
Hallo,
ich bin neu hier und hoffe, dass ich das richtige Forum erwischt habe. Falls nicht tut es mir leid und ich würde bitten mir dann zu sagen wo es hin soll.

Zu meinem Problem:

Ich habe folgende Zeichenkette: Düren (das soll Düren heißen). Nach Recherchen im Internet ist eine eine in Unicode codierte Zeichenkette ich brauche die selbe Zeichenkette in UTF-8.
Meine Frage ist nun, wie ich das hin bekomme?

Ich habe schon zahlreiche Funktionen ausprobiert unter anderem iconv(); utf8_encode(); usw..

Mir ist bewusst, dass es die Möglichkeit gibt per str_replace(); aus dem ü ein ü zu machen aber der String kann sich jederzeit ändern und es wäre doch dann einfacher i.wie eine Lösung zu finden ohne ein ewig langes Array zu erstellen... Ich denke ihr wisst was ich meine.

Ich muss noch dazu sagen, dass ich an der Codierung des Strings (Düren) nichts ändern kann. Damit muss ich arbeiten das ganze i.wie in UTF-8 Codieren, damit ich es an einen Shoutcast Server weiterleiten kann.

Ich hoffe ich habe mein Problem ausreichend beschrieben und ich hoffe, dass ihr eine Lösung habt. Weil ich selber bin mit meinen Anfänger Wissen am Ende.

Ich danke schon einmal für die Mühe.

Liebe Grüße,
Patrick

urvater
25.03.2012, 12:19:00
Wo kommt den Düren her? DB?, eine Datei?

Liegt das Problem eventuell nur in der Ausgabe bei dir? (charset in der Ausgabe)

SuNflOw1991
25.03.2012, 13:27:26
Hallo,
lieben Dank für die Antwort. Anbei die Informationen, die Du brauchst:

Düren kommt aus einer XML Datei von einem Shoutcast Server.

Ich lese also den einen Shoutcast Server aus und schicke die Informationen an einen anderen Shoutcast Server. Keine Ausgabe oder ähnliches in meinem Browser. Es ist nur so, das die Daten falsch codiert beim Shoutcast Server ankommen.

Ich hoffe, ich konnte alle Unklarheiten klären und danke nochmal für die Hilfe.

Liebe Grüße,
Patrick

meikel (†)
25.03.2012, 16:11:59
Ich habe folgende Zeichenkette: Düren (das soll Düren heißen). Nach Recherchen im Internet ist eine eine in Unicode codierte Zeichenkette Nein. Das ist ein stinknormales HTML Entity:
Beginn: &
Zeichen: #xFC in dem Fall ein HEX Code
Ende: ;

ich brauche die selbe Zeichenkette in UTF-8.
Meine Frage ist nun, wie ich das hin bekomme?
Blöde Frage, blöde Antwort: Du schreibst ein Script, welches das tut, was Du willst.

Ich habe schon zahlreiche Funktionen ausprobiert unter anderem iconv(); Und mit welchen Parametern bitte?
utf8_encode();
Im Handbuch steht:
utf8_encode — Konvertiert eine ISO-8859-1-Zeichenkette in UTF-8
Wenn die Zeichenkette kein "ISO-8859-1" ist - ist sie aber nicht.

Ich hoffe ich habe mein Problem ausreichend beschrieben und ich hoffe, dass ihr eine Lösung habt. Weil ich selber bin mit meinen Anfänger Wissen am Ende.
Handbuch lesen.

Onlinebeispiel:
http://fastcgi.php.developer.vc/selfphp/u1/ (Quelltext wird angezeigt)
Content-Type" content="text/html; charset=UTF-8"
<?php
define('HR', '<hr>');

$str = "D&#xFC;ren";

echo mb_detect_encoding($str), HR; # ASCII
echo html_entity_decode($str, ENT_QUOTES, 'UTF-8'), HR; # Düren
echo iconv(mb_detect_encoding($str), 'UTF-8', $str ); # Düren

?>

SuNflOw1991
25.03.2012, 22:11:28
Also, da traut man sich ja echt hier eine Frage zu stellen. Wenn man dann so nett unter gebuttert wird. Ich dachte das es klar ist, dass ich mich nicht erst seit gestern damit beschäftige wenn ich die Funktionen zum codieren schon kennen würde.

Da ich das nun mal alles in meiner Freizeit mache als Hobby, kann ich auch nicht direkt alles wissen und wenn ich dann bei Google usw. nicht fündig werde denke ich mir, frage ich mal bei jemanden nach, der Ahnung hat. Evtl. das ganze als Beruf gelernt hat.

Aber damit mir in Zukunft so etwas nicht mehr passiert, würde mich gerne mal interessieren, was ich falsch gemacht habe, dass ich mir so etwas hier anhören muss?

Ich dachte dies sei ein Forum für Anfänger. Ist es da nicht klar, dass ich nicht alles wissen kann?

Dennoch danke für die Lösung. Man hätte das anze nur etwas netter schreiben können...

Ckaos
25.03.2012, 22:42:38
Hi

etwas netter schreiben können
Das Geschriebene wird von jedem anders gelesen, ich habe es nicht
als un-nett gelesen ;)
Wenn man alles steif und Lektorenhaft schreibt "lebt" das Froum nicht ;)

mfg

CKaos

SuNflOw1991
26.03.2012, 00:10:03
Blöde Frage, blöde Antwort: Du schreibst ein Script, welches das tut, was Du willst.

So etwas ist alles andere als nett...

Daran gibt es nicht schön zu lesen. Aber Back to Topic. Meine Frage wurde beantwortet. Ich bin auch sehr dankbar.

Wie sie gesagt wurde war aber echt fies. Als wäre der User nichts wert nur weil er nicht so viel weiß und das komplette Handbuch gelesen hat, wie vllt. ein anderer. So kommt es bei mir zu mindestens an.

Danke aber trotzdem!

Nicht das es heißt User wären nicht dankbar für Hilfe.

urvater
26.03.2012, 12:01:43
Vieles, was der Anfragende als un-nett lesen könnten, beruht nicht selten darauf, dass alle immer schreiben sie hätten sich schon lange mit ihrem Probem beschäftigt und dann nicht einmal in der Lage sind, ihre Lösungsversuche hier zu posten.

Für dich aber noch etwas zur Info bezüglich XML.
Eigentlich sollte eine XML Datei immer in UTF-8 erzeugt werden. Alles was eine andere Codierung verwendet sollte auf den verwendeten Charset hinweisen. Grundsätzlich ist es immer von Vorteil in XML den verwendeten Charset mit anzugeben.

<?xml version="1.0" encoding="UTF-8">

Im Optimalfall ist in der XML Datei vom Shoutcast Server auch die DTD angegeben gegen die diese XML-Datei valide sein muss.

<!DOCTYPE note SYSTEM "Note.dtd">

Wenn dir diese DTD bekannt ist, kannst du sie mit den in PHP eingebauten XML Funktionen sogar auf Validität prüfen. Notfalls einmal bei den Betreibern des Shoutcast Server nachfragen. Diese würden dir die DTD oder Shema bestimmt zur Verfügung stellen.
Das würde dir eine Menge Arbeit ersparen.

meikel (†)
27.03.2012, 01:30:15
<ot>
Werter Herr von und zu SuNflOw1991, Du fragtest ua. das:
Meine Frage ist nun, wie ich das hin bekomme?
Wer soll das beantworten, was Du "wie hinbekommst"?
Das ist genauso sinnfrei wie:
"Wie kann ich..."
Wer kann wissen, was der Fragesteller kann oder nicht kann. Zumal die Frage ja schon das Ergebnis beinhaltet: er kann nicht. Könnte er es, würde er nicht fragen.

Gewöhne Dich daran, daß Programmierer paranoide und schreibfaule Kümmelspalter sind.
Die Paranoia betrifft der Sicherheit Nur wer mit dem Schlimmsten rechnet, hat die Chance, (fast) fehlerfrei zu programmieren.
Die Schreibfaulheit ist wichtig, um schlanken Code zu formulieren.
Und die Fähigkeit zum Kümmelspalten benötigt jeder, der logische Probleme lösen möchte.

Man hätte das anze nur etwas netter schreiben können...
Ich bin Programmierer und kein Lügner aka "willste ne höfliche oder ne ehrliche Antwort".

Lesen: Wie man Fragen richtig stellt (http://www.tty1.net/smart-questions_de.html)
</ot>

Dein Problem, wie aus D&#xFC;ren Düren mit charset UTF-8 wird, hatte ich außerdem ausreichend genug beantwortet und sogar ein Onlinebeispiel hinzugefügt.