Am 13.08.24 um 13:16 schrieb Stefan Ram:
Hermann Riemann <nospam...@hermann-riemann.de> schrieb oder zitierte:
Python macht z.B. Probleme in os.walk bei ISO in Dateinamen.

   Unter Linux ist heute UTF-8 die Standardkodierung. Mit
   Systemvariablen wie "LANG" oder "LC_CTYPE" könnte man dies
   vielleicht umstellen.

   Es dürfte Probleme bereiten, falls auf einem System Dateinamen
   mal in UTF-8 und mal in ISO-8859-1 kodiert sind. Einfacher ist
   es vielleicht, alle auf UTF-8 umzustellen oder wenigstens die
   Bereiche irgendwie voneinander zu trennen.

Inden Anfangszeiten von UTF-8 haben Editoren manchmal UTF-8, manchmal ISO abgesetzt. Das Ergebnis waren Dateien, in denen ISO und UTF-8
gemischt waren. Mit einem C Programm habe ich das reparieren können,
da die in ISO verwendete ä ö ü etc keinem utf-8 entsprachen.

   Python verläßt sich bei der Interpretation von Dateinamen wohl
   zunächst auf die Angaben des Betriebssystems. Es ist vielleicht
   schwierig, von Python aus die nicht-interpretierten Oktette eines
   Dateinamens zu erhalten. Dadurch ist die Arbeit mit Dateinamen
   bei gemischten Codierungen in Python manchmal schwierig!

Wen Namen entweder ISO oder UTF-8 sind kann mit try und
Umkodierung bei except das Problem gelöst werden.
Wenn Python keine ISO Dateinamen kann, kann mit C nachgeholfen werden.
Oder über GUI. Die Kommandooberfläche ist auch allergisch gegen ISO.

Nach meiner Erinnerung dürfen Dateinamen in Unix alle Werte außer
'\0' und '/' erhalten.

Probiere folgendes.
Lege das Verzeichnis test z.B. unter tmp an
Übersetze in /tmp folgendes Programm
und führe a.out aus.
Dann wechsele nach /tmp/test und habe viel Spaß mit Kommandos.

#include <stdio.h>
#include <stdlib.h>

void xopen(char *name){
   char buf[60];
   sprintf(buf,"test/%s",name);
   char *p;
   FILE *f;
   printf("%s\n",name);
   for (p=name;*p;p++) printf("%2X ",*p);
   printf("\n");
   f=fopen(buf,"w");
   fprintf(f," ");
   fclose  (f);}

int main(){
   int i;
   char buf[60];
   xopen("\"\';\\ @&");
   buf[0]='_';
   for (i=1;i<60;i++) buf[i]=0;
   for (i=1;i<33;i++) buf[i]=i;
   xopen(buf);
   printf("fertig\n"); return 0;}

--
<http://www.hermann-riemann.de>
_______________________________________________
python-de Mailingliste -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an 
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com

Reply via email to