utf8 Rückwandlung
Otto Wyss
- javascript
Ich übergebe einen Dateinamen via AJAX, der dabei utf8 gewandelt wird. Bei der Anzeige des Namens funktioniert das wunderbar, aber die Datei kann so nicht geladen werden. Wie löst man das?
Wie löst man das?
Indem man den Helfenden mehr als zwei Sätze an die Hand gibt und das Problem genau beschreibt.
Was hat das Problem mit JavaScript zu tun? Wo und wie willst du welche Datei laden? Serverseitig? Clientseitig? Was heißt laden?
Mathias
»» Wie löst man das?
Indem man den Helfenden mehr als zwei Sätze an die Hand gibt und das Problem genau beschreibt.
Sorry habe den Link vergessen (http://www.orpatec.ch/index.php?page=gallery.php). "Sihlhölzli" ist als Dateiname "Sihlh\u00f6lzli", was natürlich nicht funktioniert.
Hi,
"Sihlhölzli" ist als Dateiname "Sihlh\u00f6lzli", was natürlich nicht funktioniert.
Warum verwendest du überhaupt solche Ressourcennamen? Dass das generell ungünstig ist, ist doch bekannt - Beschränkung auf übliche ASCII-Zeichen ist meistens sinnvoll.
MfG ChrisB
@@ChrisB:
Beschränkung auf übliche ASCII-Zeichen ist meistens sinnvoll.
Nö. Systeme, die nicht auf ASCII-Zeichen beschränkt sind, sind immer sinnvoll.
(Oder schreiben wir das Jahr 1970 und sprechen ausschließlich englisch?)
Live long and prosper,
Gunnar
Warum verwendest du überhaupt solche Ressourcennamen? Dass das generell ungünstig ist, ist doch bekannt - Beschränkung auf übliche ASCII-Zeichen ist meistens sinnvoll.
"ö" ist doch kein so ungewöhnlicher Buchstabe für einen Ordnernamen, oder? Aber da ich immer noch vor dem gleichen Problem stehe, habe ich ihn nun durch "oe" ersetzt.
»» »» Wie löst man das?
»»
»» Indem man den Helfenden mehr als zwei Sätze an die Hand gibt und das Problem genau beschreibt.
»»
Sorry habe den Link vergessen (http://www.orpatec.ch/index.php?page=gallery.php). "Sihlhölzli" ist als Dateiname "Sihlh\u00f6lzli", was natürlich nicht funktioniert.
Ist ja auch kein utf8. Ein 'ö' würde da nämlich als C3B6 kodiert. Du hast aber ein 'F6' und das ist ISO-8859.
Hotte
Ist ja auch kein utf8.
Isses auch nicht, hat mit Kodierung gar nichts mehr zu tun, die passiert auf einer Ebene darunter.
Ein 'ö' würde da nämlich als C3B6 kodiert. Du hast aber ein 'F6' und das ist ISO-8859.
Du verwechselst die hexadezimale Unicode-Nummer eines Zeichens mit der Bytesequenz, die das Zeichen ergibt, wenn es mit UTF-8 kodiert wird. Der Server liefert aber nur ASCII-kodiertes JSON.
\u00f6 ist die korrekte ECMAScript-Escape-Sequenz für das Zeichen ö (U+00F6).
Mathias
»» Ist ja auch kein utf8.
Isses auch nicht, hat mit Kodierung gar nichts mehr zu tun, die passiert auf einer Ebene darunter.
»» Ein 'ö' würde da nämlich als C3B6 kodiert. Du hast aber ein 'F6' und das ist ISO-8859.
Du verwechselst die hexadezimale Unicode-Nummer eines Zeichens mit der Bytesequenz, die das Zeichen ergibt, wenn es mit UTF-8 kodiert wird. Der Server liefert aber nur ASCII-kodiertes JSON.
\u00f6 ist die korrekte ECMAScript-Escape-Sequenz für das Zeichen ö (U+00F6).
Genau, steht ja auch da: UTF-8 (c3, b6) ö (Dein Link)
Die Seite vom OP hingegen ist kodiert mit ISO-8859-1, was die Kodierung eines 'ö' zu 'f6' (hex) ja auch erklärt. Sofern hier eine Problemstellung vorliegt, hat die nichts mit UTF-8 zu tun.
Hotte
Du verwechselst die hexadezimale Unicode-Nummer eines Zeichens mit der Bytesequenz, die das Zeichen ergibt, wenn es mit UTF-8 kodiert wird. Der Server liefert aber nur ASCII-kodiertes JSON.
Endlich mal jemand, der das Problem richtig erkannt hat.
Nochmals, weiss jemand wie man ein UTF8 "äöü" wieder in ein ISO "äöü" clientseitig wandelt, so dass man es in einem "href=" benutzen kann?
Nochmals,
Wieso nochmals?
weiss jemand wie man ein UTF8 "äöü" wieder in ein ISO "äöü" clientseitig wandelt, so dass man es in einem "href=" benutzen kann?
Mit Kodierungen hast du auf der Ebene überhaupt nichts zu schaffen.
Ein (unkodierten) JavaScript-String mit einem Zeichen "ö" kannst du mit encodeURIComponent in %C3%B6 umwandeln, was du in einer URI verwenden kannst.
Allerdings darfst du encodeURIComponent nur auf die Zeichen anwenden, die nicht in der URI vorkommen dürfen und maskiert werden müssen.
Mathias
@@molily:
Allerdings darfst du encodeURIComponent nur auf die Zeichen anwenden, die nicht in der URI vorkommen dürfen und maskiert werden müssen.
?? Warum?
Allerdings darfst du encodeURIComponent nicht auf den gesamten URI anwenden, sondern nur auf den Teil, wo prozent-codierte Zeichen vorkommen dürfen.
http://validator.w3.org/check?uri=http%3A%2F%2Fexample.net funktioniert perfekt.
Live long and prosper,
Gunnar
Allerdings darfst du encodeURIComponent nur auf die Zeichen anwenden, die nicht in der URI vorkommen dürfen und maskiert werden müssen.
?? Warum?
Wie, »warum«?
Weil / sonst zu %2F wird und nicht als Path-Segment-Trenner erkannt wird.
Allerdings darfst du encodeURIComponent nicht auf den gesamten URI anwenden, sondern nur auf den Teil, wo prozent-codierte Zeichen vorkommen dürfen.
http://validator.w3.org/check?uri=http%3A%2F%2Fexample.net funktioniert perfekt.
Auch im Path-Segment dürfen meines Wissens Escaped-Zeichen vorkommen.
http://validator.w3.org/check?uri=http%3A%2F%2Fexample.net
Wenn ich das richtig sehe muss dort aber nur / im Query-String escaped werden, der Rest nicht.
Mathias
Sorry, lieber Otto, du kannst hier nicht einfach eine URI hineinwerfen und uns den Rest überlassen. So kannst du nicht mit Hilfe rechnen.
Offenbar lädst du JSON und bekommst, obwohl der Server die Umlaute korrekt kodiert, komische Sachen heraus. Keine Ahnung, woran das liegt, ich finde mich in diesem Wust nicht zurecht. Nicht umsonst bat ich dich, dein Problem zu beschreiben, und wo du gerade dabei bist, kannst du eine reduzierte Testseite bauen, die das Problem isoliert.
"Sihlhölzli" ist als Dateiname "Sihlh\u00f6lzli", was natürlich nicht funktioniert.
Soweit ich das sehe wird das JSON durchaus korrekt dekodiert, also aus Sihlh\u00f6lzli wird in JavaScript wieder Sihlhölzli.
Dann verwendest du allerdings irgendwo encodeURIComponent, bevor du die Bildadresse zusammebaust. Heraus kommt:
http://www.orpatec.ch/gallery/FCW%20Turnier%20Sihlh%C3%B6lzli/CIMG0789.JPG
Das ö ist hier durchaus korrekt kodiert, nur die / sollen nicht kodiert werden.
Deinen Code schaue ich mir erst dann an, wenn du meinen Bitten entsprochen hast.
Mathias
Ich übergebe einen Dateinamen via AJAX, der dabei utf8 gewandelt wird. Bei der Anzeige des Namens funktioniert das wunderbar, aber die Datei kann so nicht geladen werden. Wie löst man das?
SCNR;
Hotte
Ich übergebe einen Dateinamen via AJAX, der dabei utf8 gewandelt wird. Bei der Anzeige des Namens funktioniert das wunderbar, aber die Datei kann so nicht geladen werden. Wie löst man das?
Man = Mann im eingefahrenen Zustand.
mfg Beat
Hallo,
sehr schöner Beitrag, auch wenn ich an manchen Stellen nicht ganz deiner Argumentation folge: "Man" ist gelegentlich angebracht, nämlich wenn man[sic!] verallgemeinern möchte.
Ach ja, und im Englischen gibt es noch eine zweite, seltenere Methode, das deutsche "man" auszudrücken: Die Verwendung von Passiv-Sätzen (okay, funktioniert im Deutschen auch). It can be done!
So long,
Martin
Hi,
Ach ja, und im Englischen gibt es noch eine zweite, seltenere Methode, das deutsche "man" auszudrücken: Die Verwendung von Passiv-Sätzen (okay, funktioniert im Deutschen auch). It can be done!
wenn wir schon beim Thema sind, warum übersetzt man man im Englischen auch mit Mensch anstatt Mann. zb. Mankind finde ich da immer sehr seltsam.
Was ich damit meine ist der Ursprung, war da Wort "man" vielleicht früher ausschlisslich dem "Mann" zugedacht und man(ups. hier ist es ja schon wieder) hat das früher nicht mit Mensch übersetzt?
Pete
Was ich damit meine ist der Ursprung, war da Wort "man" vielleicht früher ausschlisslich dem "Mann" zugedacht und man(ups. hier ist es ja schon wieder) hat das früher nicht mit Mensch übersetzt?
Pete
Nein, „man“ hat seinen Ursprung im Latein: „homo“, „humanus“, daraus englisch „human“, „man“. homo bedeutet sowohl „Mann“ als auch „Mensch“, was kulturelle Gründe hat: Im sozialen Leben Roms waren die Akteure in der Regel Männer.
Alles Gute
huhu
Nein, „man“ hat seinen Ursprung im Latein: „homo“, „humanus“, daraus englisch „human“, „man“. homo bedeutet sowohl „Mann“ als auch „Mensch“, was kulturelle Gründe hat: Im sozialen Leben Roms waren die Akteure in der Regel Männer.
Soso, aha, whose next?
mfg Beat
Hi,
Nein, „man“ hat seinen Ursprung im Latein: „homo“, „humanus“, daraus englisch „human“, „man“. homo bedeutet sowohl „Mann“ als auch „Mensch“, was kulturelle Gründe hat: Im sozialen Leben Roms waren die Akteure in der Regel Männer.
ja so meinte ich das. Also war mensch und Mann das Gleicher, während Frau, na ja irgendwas anderes, war. Welcher Idiot hat das geändert?;-)
Pete