• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Xcode 4 spinnt bei UTF-8

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Hallo AT,

Xcode bringt mich gerade zur Weißglut, warum zur Hölle interpretiert es meine UTF-8 Dateien immer als MacRoman? Und zwar obwohl alles überall auf UTF-8 steht (auch in der Konfigurationsdatei meines Projekts, in den Einstellungen von Xcode).

Andere Programme wie TextMate, vim etc. bocken nicht so gewaltig herum und wenn ich in TextMate auf MacRoman umstelle, habe ich genau die gleichen tollen Symbole wie in Xcode.

Ich würde schon gerne Xcode benutzen, wenn es sich nicht so sperren würde.

Wer will kann es mal selbst ausprobieren:
Code:
svn checkout http://nox-obscura-guildpage.googlecode.com/svn/trunk/ nox-obscura-guildpage-read-only

hier z.B. in der main.py Zeile 73 wird der Bindestrich "—" in Xcode als "Äî" angezeigt. Ich habe zuvor mit TextMate gearbeitet und würde jetzt gerne auf Xcode umsteigen, damit ich besser die Source-Verwaltung verwenden kann (und wie man am Code sieht, muss noch etwas umgebaut werden).
 
Habe mir mal das Repo gezogen. Das Problem tritt hier aber nicht auf.
 
Bei mir ist es leider noch so, auch bei den html-Dateien. Nur TextEdit hat das gleiche Problem, sonst keine andere Anwendung.
 
Dann speichere es mal mit BOM.
 
Jetzt die Frage wie ich diese BOM dort hinbekomme. Ich habe gerade mit hexdump -C nachgeschaut, die Dateien fangen tatsächlich nicht damit an. Aber eigentlich ist es doch nicht nötig bei UTF8?
 
That's it. Vielen Dank. Jetzt muss ich noch schauen, ob das auch mit dem Cherrypy-Server funktioniert. Ich habe schon mal im Streifzug gelesen, dass UNIX Systeme machmal Probleme mit dem BOM haben?!

Kennst du ein UNIX-Tool mit dem man solche Dateien korrekt erstellen bzw. konvertieren kann? iconv bietet soweit ich gehesen habe keine Option dazu, oder ich habe sie übersehen.
 
iconv kann das imho nicht, aber es gibt unzählige scripte und lösungen.
Beispiel: Using awk to remove the Byte-order mark. Mir gefällt die Lösung mit sed besser. Geht aber z.B. auch mit vim.
Code:
vim -e -s -c ':set bomb' -c ':wq' FILE
vim -e -s -c ':set nobomb' -c ':wq' FILE
 
Zuletzt bearbeitet:
Danke für den vim-Befehl.

Lustigerweise erstellt Xcode UTF-8-Dateien ohne BOM, aber auch TextEdit etc. können damit umgehen. Ich frage mich, was das für ein komischer Fehler ist. Denn sobald ein anderes Programm wie z.B. vim eine UTF-8-Datei ohne BOM erstellt, gibt es wieder lustige Kodierungen, mit BOM funktioniert es. Oder ist das jetzt nur auf meinem System, wobei ich mir das fast nicht vorstellen kann!?
 
Xcode, Textedit, etc. hinterlegen das Encoding ich glaube in irgendwelchen File-Attributen. Daher brauchen sie den BOM nicht zwingend, wenn die Datei daher stammt.
 
Ob das jetzt explizit SVN kann ich nicht sagen. Aber an irgendeiner Stelle geht das verloren.