Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Merkwürdiges "unsichtbares" Zeichen durch Copy & Paste [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Merkwürdiges "unsichtbares" Zeichen durch Copy & Paste


 
unset
02-07-2009, 21:27 
 
Hallo,

ich habe da ein kleines (ich lüge, mitlerweile ist es ein gewaltiges) Problem, dessen Ursache sich mir zwar mehr oder weniger erschließt, ich aber dennoch keine Ahnung habe, was ich dagegen tun kann.

Alles fing vor ein paar Wochen an, als ich ein Script eines Kollegen bearbeitet habe und kurz darauf krank war. Als ich wiederkam erzählte er mir eine – zunächst völlig unverständliche – Geschichte. Ein Script, dass in einer Reihe von Editoren vollkommen in Ordnung aussah, warf einen Fehler. Parse Error. Das Script war nicht besonders lang. Irgendwann war ein if-Block als Ursache erkannt. Das gespenstische: Wenn der Kollege das "if" neu geschrieben hat, ging es. Hat er es Rückgänig gemacht, kam wieder der Fehler. Komisch. Stressbedingt nicht weiter verfolgt.

Ein paar Tage später, selbes Phänomen (übrigens war ich auch mal wieder kurz davor hier um Hilfe zu bitten): ucwords geht nicht mehr. PHP kam mit der fadenscheinigen Ausrede, die Funktion "ucwords" gäbe es nicht. Wenn ich sie selbst definiert habe, mochte PHP das auch nicht, und sagte, ich darf die Funktion nicht nochmal definieren. Aha, also doch da was? Nach Stundenlangem hin und her dann –*zufällig –*das Problem entdeckt: Vor "ucwords" befand sich ein Zeichen, dass sowohl im Browser als auch in Eclipse (PDT) nicht dargestellt wurde. PHP hat das Zeichen zwar erkannt, konnte es aber auch nicht sichtbar machen. Auch ord() hat nichts ausgespuckt. Komisch. Mir fiel das Problem mit dem if-Block wieder ein.

Und seitdem ist es wie verhext: Alle paar Stunden muss ich mich mit diesem Problem rumschlagen. Mitlerweile konnte ich den Herd auch mehr oder weniger einkreisen: Das Problem kann augenscheinlich immer nur dann auftreten, wenn ich Script stellen kopiere und wieder einfüge.

Ich habe auch schon die Eclipse Version gewechselt, die PDT Version gewechselt. Kein Erfolg. Ich weiß ja nicht einmal, woher das Problem genau kommt. Ist es überhaupt ein Eclipse Problem? Ist es vielleicht ein Mac Problem? Hat jemand das auch schon mal erlebt?

Beiwerk: Ich benutze in Projekten durchgehend UTF-8. Auf meinem Rechner läuft wie erwähnt OS X (voll geupdatet) mit Eclipse PDT (derzeit die 2.0.1 mit 3.4.1 Eclipse –*auch nur weil die einen Extrem nervigen Bug nicht hat).

Ich hoffe ich finde hier Hilfe. Im Grunde weiß ich ja nicht mal genau wonach ich googlen soll. Alles was ich bisher ausprobiert habe, hat leider nicht zu irgend etwas brauchbarem geführt.

Wer das Zeichen gerne mal hätte, dem kann ich es ja Morgen mal hier rein pasten, wenn es mir wieder unterkommt.

 
Hopka
02-07-2009, 23:21 
 
Ich hab sowas ähnliches auch öfters.
Bei mir kommt es daher, dass ich mich beim tippen von "Sonderzeichen" (eigentlich Tokens wie z.B. eckige und runde Klammern) immer sehr auf der Tastatur verrenken muss (MacBook). Dabei passiert es, dass wenn ich vor oder hinter dem Sonderzeichen ein Leerzeichen tippe, ich zu schnell bin und noch andere Tasten gedrückt halte (Option, Command, ...) und dann irgendwelche unsichtbaren Zeichen eingebe (davon gibt es scheinbar sehr viele auf der Mac-Tastatur).
Mir ist das bisher allerdings nur in NetBeans aufgefallen, also habe ich jetzt mit deiner Beschreibung die Kombination Mac + Java in Verdacht.

 
unset
02-07-2009, 23:24 
 
Das Gefühl, dass ich eventuell versehentlich etwas eingebe, hatte ich auch schon öfter. Evtl. rührt es tatsächlich daher.

Edit: Was mir grad noch einfällt. Delta Walker (ein Diff-Tool, das auch auf Eclipse basiert), erkennt dieses "kaputte" Zeichen!

 
wahsaga
03-07-2009, 00:05 
 
Was sagt denn ein Blick auf solche eine Stelle mit einem Hex-Editor, um welches Zeichen (bzw. -code) es sich handelt?

 
unset
03-07-2009, 00:30 
 
Ich muss gestehen, dass ich noch nicht mit einem solchen an die Sache gegangen bin. Werde ich Morgen direkt mal nachholen!

 
fireweasel
03-07-2009, 01:01 
 
...
Und seitdem ist es wie verhext: Alle paar Stunden muss ich mich mit diesem Problem rumschlagen. Mitlerweile konnte ich den Herd auch mehr oder weniger einkreisen: Das Problem kann augenscheinlich immer nur dann auftreten, wenn ich Script stellen kopiere und wieder einfüge.

Ich habe auch schon die Eclipse Version gewechselt, die PDT Version gewechselt. Kein Erfolg. Ich weiß ja nicht einmal, woher das Problem genau kommt. Ist es überhaupt ein Eclipse Problem? Ist es vielleicht ein Mac Problem? Hat jemand das auch schon mal erlebt?

Schön, wenn man erfährt, dasss man nicht allein ist. ;)
Bei mir waren es vom PHP-Manual kopierte Quellcode-Teilstücke.
Da kein Unterschied zum von Hand abgetippten Text sichtbar war, vermutete ich irgendwelche Whitespace-Zeichen (Tab oder Non-Breaking-Space). Ich war aber zu faul, das problematische Zeichen per Hex-Viewer genauer einzugrenzen.

 
onemorenerd
03-07-2009, 01:57 
 
Wenn es nur am Anfang von reinkopiertem Text steht, tippe ich auf ein BOM, das fälschlicherweise aus dem Clipboard mitkommt.

 
unset
03-07-2009, 11:40 
 
Und hier ist das Zeichen: getFkRow('itemwidget_items_id')

Zwischen dem Anführungszeichen und dem i von itemwidget_items_id

Edit: Hex-Editor sagt, es wäre EF BB BF oder 0xBBEF. Ein BOM wäre aber doch EF BB EF oder irre ich da?

 
combie
03-07-2009, 11:57 
 
Wikipedia sagt ganz klar: UTF-8 Bom --->> EF BB BF
Zum selber nachlesen: Byte Order Mark ? Wikipedia (http://de.wikipedia.org/wiki/Byte_Order_Mark)

Ist das die berühmte MAC User Mentalität?
Erst fragen, dann Hexeditor rausholen?
Und dann noch nichteinmal im INET suchen, wie so eine BOM aussieht?
:D:D hihihi :D:D

Und der Gute Tipp zum Schluß:
PHP kann (noch) nix mit der BOM anfangen. Es ist keine schlechte Idee diese in allen benutzten Editoren abzuschalten.

 
unset
03-07-2009, 12:06 
 
Ich habe von zu Hause aus gefragt. Da konnte ich das Problem nicht reproduzieren. Und jetzt bitte keinen Spacko OS Flamewar, da steht mir der Sinn wirklich nicht nach.

 
combie
03-07-2009, 12:24 
 
Und jetzt bitte keinen Spacko OS Flamewar, da steht mir der Sinn wirklich nicht nach.

Nagut, dann eisene Fakten: PHP ist auf iso-8859-1 "geeicht"!
Also sollte man auch alle Quelltexte in iso abfassen.

 
unset
03-07-2009, 12:44 
 
Das ändert nichts an meinem Problem.

 
combie
03-07-2009, 12:51 
 
Dein Problem ist, dass dieses MAC OS (oder der Editor) vor jeden Copy&Past Schnippsel diese dusselige BOM klebt. Ein Feature, welches dem Empfänger mitteilt, dass utf-8 kodiertes in der Zwischenablage schlummert.

Das ändert nichts an meinem Problem.
Natürlich wäre das Problem gegessen, wenn du deine Quelltexte in iso abfassen würdest.

Und wie schon gesagt: Das Abschalten der BOM im Editor könnte Früchte tragen.

 
unset
03-07-2009, 13:00 
 
Dein Problem ist, dass dieses MAC OS (oder der Editor) vor jeden Copy&Past Schnippsel diese dusselige BOM klebt. Ein Feature, welches dem Empfänger mitteilt, dass utf-8 kodiertes in der Zwischenablage schlummert.
Das Problem kommt nicht aus dem OS. Egal wo ich Krempel aus dem Clipboard sonst hinschicke –*kein BOM. Das Problem tritt nur in Eclipse auf. Und darüberhinaus …

Und wie schon gesagt: Das Abschalten der BOM im Editor könnte Früchte tragen.
Scheint es so zu sein, als könne man Eclipse nicht explizit sagen, dass es UTF-8 kodierte Texte nicht mit BOM speichern soll.

Natürlich wäre das Problem gegessen, wenn du deine Quelltexte in iso abfassen würdest.
Ich wiederhole mich ungern, aber: Nein! Egal in welcher Kodierung ich arbeite, das BOM wird trotzdem mit eingefügt und nicht angezeigt (jedenfalls in der Default Schriftart (Monaco). Ändere ich auf Courier New, sehe ich ein Zeichen).

 
fireweasel
03-07-2009, 13:01 
 
Dein Problem ist, dass dieses MAC OS (oder der Editor) vor jeden Copy&Past Schnippsel diese dusselige BOM klebt. Ein Feature, welches dem Empfänger mitteilt, dass utf-8 kodiertes in der Zwischenablage schlummert.
Man sollte meinen, dass ein modernes Betriebssystem vernünftigere Methoden hat, um Clipboard-Datentypen zu kennzeichnen.


Natürlich wäre das Problem gegessen, wenn du deine Quelltexte in iso abfassen würdest.

Und wie schon gesagt: Das Abschalten der BOM im Editor könnte Früchte tragen.

Wenn die Pseudo-BOM beim Einfügen vorn angehängt wird. Falls das schon beim Kopieren passiert, kannst du in deinem Quelltext-Editor einstellen, was du willst, es ändert sich exakt: nix.

 
PHP-Desaster
03-07-2009, 13:03 
 
Vielleicht verwendet das Mac OS intern immer die BOM für UTF-8 Zeichenketten, dies geht aber bei der Verwendung in Java schief. Das ist aber nur Spekulation.

 
onemorenerd
03-07-2009, 23:39 
 
Ich habe auch Mac OS X mit allen Updates und bekomme kein BOM beim Einfügen in Eclipse. Getestet mit Ganymede, Europa und Galileo.

Ach unset, hast du eigentlich schon Galileo? Die Cocoa-Version?

 
unset
04-07-2009, 02:45 
 
Ich werde es Montag mal genauer prüfen. Jedenfalls. Ich konnte das Problem durch den Clipboard Manager auf Eclipse eingrenzen. Warscheinlich eine doofe PDT vs. Eclipse Version (trott btw in allen perspektiven auf).

 
marc75
13-07-2009, 11:06 
 
Ich habe auch Mac OS X mit allen Updates und bekomme kein BOM beim Einfügen in Eclipse. Getestet mit Ganymede, Europa und Galileo.

Ach unset, hast du eigentlich schon Galileo? Die Cocoa-Version?

Ich hab letzte Woche das Galileo teil mal runtergeladen und fand irgendwie das Teil recht langsam. Kann aber an mein altes BS (WIN2K) liegen. Habe es wieder entfernt.

 
unset
13-07-2009, 11:55 
 
Inwiefern hat das was mit dem Thema zu tun?!

 
marc75
13-07-2009, 12:15 
 
Nichts, hab nur auf onemorenerd seine Zwischenfrage geantwortet, obwohl sie eher an dich gerichtet war.

Zu deinem Thema, Eclipse PDT hat manchmal auch die Eigenschaft Codezeilen zu verschlucken. Ist mir mit dem Ganymede PDT zwei, drei mal passiert. Ansonsten habe ich solche Copy/Paste Probleme nicht, bzw nicht so in dem Ausmaß, wenn ich was aus dem Firefox kopiere werden immer Zeichen voran gestellt, was bei anderen Browsern nicht passiert, allerdings für mich sichtbar.

 
unset
13-07-2009, 12:30 
 
Wenn ich das richtig lese, bist du auch nicht mit OS X unterwegs, oder?!

 
marc75
13-07-2009, 12:33 
 
Wenn ich das richtig lese, bist du auch nicht mit OS X unterwegs, oder?!

Nö, Gott bewahre :D
(kleiner Scherz)

Hoffe das ist jetzt keine weitere Bedingung gewesen um in deinen Beitrag was schreiben zu dürfen.

 
unset
13-07-2009, 12:55 
 
Hier geht es ja um ein ziemlich konkretes Problem. Dass deine PDT-Version langsam ist, ist zwar ärgerlich und sicherlich auch Wert, dass zu schreiben. Aber dann mach doch ein eigenes Thema dafür auf bzw. schau, ob es dazu nicht etwas gibt. Posten um des postens willen ist nicht zielführend :-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:17 Uhr.