Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> Zeichensatzgewurstel auf dem Server, unicode, utf und latin

Geschrieben am: Sa 15.03.2008, 14:16
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Hallo,

Da ist ein kleines Problem mit Zeichensätzen in Dateipfaden.
Ich weiss jetzt nicht ob's an Linux liegt oder weil's online ist. Lokal unter windows läuft alles prima.

Jedenfalls sind da einige Bilddateien mit Sonderzeichen im Namen:

z.B: das_ist_1_€.jpg

Direkt als
QUOTE
<img src="das_ist_1_€.jpg">

krieg ich kein Bild, obwohl der Dateipfad richtig angeben wird.
Auch in den Bildeigenschaften scheint alles zu stimmen.

mit
CODE
<img src="das_ist_1_%80.jpg">

geht's dann.

Übergeb ich das Bild roh "das_ist_1_€.jpg" nun jedoch an Javascript krieg ich mit
QUOTE
img_obj.src='das_ist_1_€.jpg';
den Pfad als unicode zurück: 'das_ist_1_%E2%82%AC.jpg'

auch hier schafft
CODE
img_obj.src='das_ist_1_%80.jpg'
Abhilfe.

Nicht dass mich das irgendwie stört, nur tritt das gleiche Problem bei dem Anführungszeichen (") auf. Hat da jemand eine Liste welche Zeichen genau davon betroffen sind? Das Dollarzeichen ($) funktioniert z.B. einwandfrei.

( btw. dass man / " ' * ; - & ? ( ) [ ] ~ ! $ { } > < # @ nicht in Linux-Dateipfaden benutzen sollte, weiss ich auch. )

( btw 2:Die Quotes sind da , weil der € hier mit dem "[code]"-tag in keiner der 3 Versionen funktioniert. )

Merkwürdigerweise kann man mit php den Dateipfad nur mit "das_ist_1_€.jpg" lesen.
if(!is_file('das_ist_1_€.jpg'))echo 'das funktioniert nie und nimmer';
else echo 'doch das funktioniert';

???

Gruss

Tümmel
Top
PMEmail Poster
Top
 
 

#2 Geschrieben am: Di 18.03.2008, 19:52 (+3d 05:36)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Zu schwierig ?

Bis ich eine Liste hab, lass ich halt nur ascii-character zu.

Das hat also keine Eile.
Top
PMEmail Poster
Top
 
profo
#3 Geschrieben am: Di 18.03.2008, 20:41 (+00:48)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 252
Mitglied seit: 19.01.2007


Tuemmel,

das hat nichts mit Server-Gewurstel zu tun, Du hast einfach invaliden HTML-Code. URLs sind genau definiert (http://www.ietf.org/rfc/rfc1738.txt) und erlauben nur die Zeichen 'a' bis 'z', '0' bis '9', '+', '.' und '-'.



--------------------
Forenverzeichnis, Blogverzeichnis und Wikiverzeichnis ohne Backlinkfplicht
E-Mail mit mailde.de - Einfach E-Mail!
beziehungs-kiste.net - Das Tratschforum für Singles, Paare und Familien
Top
PMEmail PosterUsers Website
Top
 

#4 Geschrieben am: Di 18.03.2008, 22:29 (+01:48)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Wir haben heute den 18. März 2008.

Seit einigen Jahren sollten urls auch uft8-encoded gelesen werden können.

Die urls komplett als hex-werte zu übergeben, hab ich auch schon überlegt.

Der Artikel war aber ganz erheiternd. wink.gif

Das das hier nicht wie angeben unicode sondern utf-8 steht, gibt mir mehr umso mehr zu denken, da der Browser eigentlich utf-8 encodete urls lesen sollte.
QUOTE
img_obj.src='das_ist_1_€.jpg';
den Pfad als unicode zurück: 'das_ist_1_%E2%82%AC.jpg'


Ich frage mich nur, wie es kommt dass javascript mit linux zusammen utf-8 nicht lesen kann, während javascript mit windows die url korrekt liest und warum übehaupt einmal der € in hex umgewandelt wird und ein andernmal in utf-8.

Aber an Grundlagenforschung habe ich kein Interesse mehr und das Interesse an Grundlagenforschung für linux befindet sich auf der Höhe meiner letztes Jahresbilanz.

Hätte ja sein können, dass jemand einfach dieses Symptom bereits schon mal umgehen musste.
Top
PMEmail Poster
Top
 
profo
#5 Geschrieben am: Di 18.03.2008, 23:01 (+00:32)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 252
Mitglied seit: 19.01.2007


Tuemmel,

der erheiternde Artikel ist das Dokument, nach dem sich die Browserprogrammierer bei der Implementierung des URL-Parsings richten.

Für eine korrekte Kodierung schau Dir in Javascript mal escape(), bzw. bei php urlencode() oder bei Perl URI::Escape an.


--------------------
Forenverzeichnis, Blogverzeichnis und Wikiverzeichnis ohne Backlinkfplicht
E-Mail mit mailde.de - Einfach E-Mail!
beziehungs-kiste.net - Das Tratschforum für Singles, Paare und Familien
Top
PMEmail PosterUsers Website
Top
 

#6 Geschrieben am: Mi 19.03.2008, 03:15 (+04:13)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Hallo Profo,

Aha,
QUOTE

der erheiternde Artikel ist das Dokument, nach dem sich die Browserprogrammierer bei der Implementierung des URL-Parsings richten.

... und das bereits seit 1994. Stell dir vor, die Motorenbauer von heute richten sich noch nach dem 1876 erfundenen Ottomotor, will sagen kalten Kaffee wirst du bei mir nicht los.


Das Prob war so:
Die Browserumgebung in der FF oder IE laufen ist beidesmal Windows.

Nur wenn ich einen Server unter Windows laufen lasse und die Seite anschaue, tritt kein Fehler auf, wenn der Server unter Linux läuft, kommt der Fehler, obwohl beidesmal der gleiche php-Code ausgeführt wird.

Und auf beiden Servern ist der Dateiname mit €-Zeichen gespeichert.
Besonders rätselhaft ist hier die Übergabe der url als Javascriptvariable, die anschiessend auf Linux als utf-8 und auf windows als hex zurückgegeben wird. Der Server hat hier aber gar keinen Einfluss. Also muss der Dateipfad bereits beim readdir($bilderordner) anders ausgelesen worden sein.

=>linux-php != windows-php , was die Codierung betrifft, auch wenn's gleich aussieht.
oder linux € != windows €

€ mit Windows funktioniert. € mit linux funktioniert nicht

Im Übrigen, danke ich benutze bereits rawurlencode.

Gruss Tümmel
Top
PMEmail Poster
Top
 
Martin J
#7 Geschrieben am: Mi 19.03.2008, 03:31 (+00:16)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 79
Mitglied seit: 25.05.2007


@Tuemmel
Du weisst aber, dass Du in der php.ini ein default Encoding setzen kannst und dieses meines Wissens nach unter Linux nicht utf-8 ist?

Grundsätzlich würde ich aber Pfade und URLs immer in reinem Ascii codiieren, egal was theoretisch geht oder nicht. Das dürfte Dir diese Probleme ersparen.

Edit: damit das Posting nicht bessewisserisch klingt: Ich habe mich mal sehr intensiv mit einer ähnlichen Frage auseinandergesetzt. Ich hatte ein Problem bei Ajax, dass IE und FF unterschiedliche Daten trotz gleichen Seiten-Encodings lieferten. Es gab einen "Best Practice" Ansatz um dieses Problem zu lösen, aber so eine richtig saubere Lösung kenne ich nicht.
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#8 Geschrieben am: Mi 19.03.2008, 11:35 (+08:03)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2409
Mitglied seit: 4.02.2006


Das

QUOTE (Tuemmel @ Sa 15.03.2008, 14:16)
mit
CODE
<img src="das_ist_1_%80.jpg">

geht's dann.


kann eigentlich gar nicht gehen, weil %80 kein korrekt codierter UTF-8 - Code ist.

Man kann das direkt im Firefox an eine beliebige Url anhängen und sieht, daß FF das nicht decodieren kann.

Hängt man dagegen an eine Url das

CODE
_%E2%82%AC


ran, dann wird gesagt: 'Url ..._€ könne nicht gefunden werden'. Sprich: Diese Zeichenfolge ist korrektes UTF-8.

Da das obige aber funktioniert, scheint die genutzte PHP-Implementierung die Ausdrücke roh zu decodieren, ist selbst wohl als ASCII codiert und reicht das ans Betriebssystem weiter. Dort - in einer 8-Bit - Codepage - ist der Klartextwert = €.

Sprich: Das

CODE
linux € != windows €


ist dann zu erwarten.

Eventuell löst die Speicherung des Scripts als UTF-8 das Problem. Aber ich mußte mich noch nie mit solchen Problemen rumschlagen. tongue.gif

In der Windows-1252 - Codepage (8 Bit) ist das €-Symbol Hex80 zugeordnet. In so einer Umgebung kann natürlich die korrekte UTF-8-Codierung nicht verstanden werden.

PS: Wie man sieht, hat auch die Forensoftware Probleme mit € im CODE-Element.

QUOTE
linux € != windows €


Das QUOTE-Element kommt damit klar.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 

#9 Geschrieben am: Mi 19.03.2008, 18:54 (+07:19)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Die einzige saubere Lösung scheint mit

$data=base64_encode('das ist 1 €').jpg

und anschliessend:

$data = str_replace(array('+','/','='),array('-','_','.'),$data);

wie bei www.php.net erwähnt

auf linux und windows zu funktionieren.

Mit urlencode und rawurlencode liefern linux und windows immer genau gegensätzliche Ergebnisse beim Abrufen.

Gruss Tümmel
Top
PMEmail Poster
Top
 
Martin J
#10 Geschrieben am: Mi 19.03.2008, 19:04 (+00:09)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 79
Mitglied seit: 25.05.2007


QUOTE (Tuemmel @ Mi 19.03.2008, 19:54)

und anschliessend:

$data = str_replace(array('+','/','='),array('-','_','.'),$data);


Wenn Dir md5 reicht, kannst Du Dir str_replace sparen.
Top
PMEmail Poster
Top
 

#11 Geschrieben am: Mi 19.03.2008, 23:51 (+04:47)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


QUOTE
Wenn Dir md5 reicht, kannst Du Dir str_replace sparen.

Witzbold, und wie willst du das dann wieder decodieren? wink.gif

Egal, das war zwar ein ziemlicher Fotzlejob, ging aber schneller als ich dachte.
Ausserdem kann ich jetzt endlich eine bisschen Sonne in meinen Ordnern scheinen lassen:

QUOTE
☼rdner/☼,Das ist ein €.jpg


ist jetzt:

QUOTE
pHJkbmVyLw../pCwgZGFzIGlzdCBhbHNvIGVpbiCA.jpg


cool.gif Asien wartet nicht.
Top
PMEmail Poster
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/23497

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Server Backup, SQL Backup Siegfried_D 164 3 Fr 31.10.2008, 22:00
Domain eines Kunden auf meinen Server umschreiben? Josh 129 1 Di 28.10.2008, 18:17
Shell: Daten auf externen Server kopieren G.P. 176 6 Mo 20.10.2008, 13:41
Virtual Server von Strato VoinG 305 7 So 28.09.2008, 16:24
Server - CPU Auslastung TTlong 265 8 So 21.09.2008, 10:48
Kostenlose Server Control Panels PH 380 12 Sa 20.09.2008, 12:56
Link zu einer Datei auf dem Server setzen sylvia73 104 1 Mo 15.09.2008, 19:39
suche Server Hosting zu rock-bottom Preisen PH 351 10 Sa 13.09.2008, 10:25
Große Dateien auf Server anzeigen?! Toblerone 334 6 So 31.08.2008, 18:32




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]