UNICODE von Textdateien erkennen

Davicito

Erfahrenes Mitglied
Hi,

ein Anwender ruft unter der Konsole (Ubuntu) mein geschriebenes Programm, zusammen mit einer Textdatei, auf. Da nun das Textformat in ANSI oder Unicode vorliegt, möchte ich bevor mein Programm loslegt, mit Hilfe einer Fi-Abfrage, das Format feststellen können, um gegebenfalls Unicode zu benutzen.

Hat jemand eine Idee, wie ich beim Einlesen der Textdatei, Unicode erkenne?

C:
...
if(argc > 1 && argv[1] != NULL && (file2 = fopen(argv[2], "write")) != NULL && (file1 = fopen(argv[3], "read")) != NULL)
	{		
		while(fgets(buffer, SIZE, file1) != NULL)
		{					
			counter1++; //! Counter für Zeilenanzahl
			
			//! Trennt Wörter in Buffer nach Trenzeichen aus splitt in Variable wort 	
			wort = strtok(buffer, splitt);
			
			//! Wörter solange einlesen, wie Wörter über Buffer übergeben 	werden.			
			while(wort != NULL)
			{							    	
				if(strncmp(wort,"-",1) != 0 )
				{				
					anhaengen(aktl_Elem, wort, copyString, counter1);
				}
				
				wort = strtok(NULL, splitt);		    				
			}						
									    		
		}
		...
		fclose(file2);
		fclose(file1);
	}
...
 
Zuletzt bearbeitet:
Hmmm.. Danke erstmal für Deine schnelle Antwort. Kannst Du mir vielleicht ein Beispielcode geben, damit ich es verstehen kann? Im Internet bekommt mann nur Auskunft was das ist aber keine beispiel-Syntax. Oder mit welcher Bibliothek lässt sich das durchführen?

Liebe Grüße.
 
Hallo,

zumindest die Erkennung lässt sich bewerkstelligen, indem du einfach die ersten 4 Bytes der Datei einliest und prüfst, ob sie der Signatur entsprechen, die du in der Tabelle findest, in in meinem Link enthalten ist.

Gruß
MCoder
 
Hi.

Unter Unix wird in der Regel keine BOM gespeichert.

@Davicito: Was meinst du denn mit Unicode? UTF-8? Und von welchen speziellen Funktionen redest du denn, also was willst du denn anders machen wenn du weißt das es ein ANSI Zeichensatz bzw. eine Unicode Kodierung ist?

Gruß
 
Halle deepthroat,

ich hatte das Problem, dass bei der Textfileübergebe mit meinem Programm, einige Textfils öffnen ließen und andere wiederum nicht. Aber ich hab das mal mit anderen Ubuntumaschinen laufen lassen und es ging komischerweise bei anderen PC's prima und bei einigen anderen PC's nicht. Hatte zunächst angenommen, das ich beim Öffnen eines Textfils erstmal prüfen müsste, ob es nun ANSI oder Unicode-8,Unicode-16 etc. ist. Aber so denke ich, wenn es unter anderen Terminals läuft, dass es mit der Zeichendarstellung von Ubuntu nicht klappt. Hast Du vielleicht eine idee wie mann das da umstellen kann, sodass es bei allen Rechnern funktioniert?

Gruß.
 
Halle deepthroat,

ich hatte das Problem, dass bei der Textfileübergebe mit meinem Programm, einige Textfils öffnen ließen und andere wiederum nicht. Aber ich hab das mal mit anderen Ubuntumaschinen laufen lassen und es ging komischerweise bei anderen PC's prima und bei einigen anderen PC's nicht. Hatte zunächst angenommen, das ich beim Öffnen eines Textfils erstmal prüfen müsste, ob es nun ANSI oder Unicode-8,Unicode-16 etc. ist. Aber so denke ich, wenn es unter anderen Terminals läuft, dass es mit der Zeichendarstellung von Ubuntu nicht klappt. Hast Du vielleicht eine idee wie mann das da umstellen kann, sodass es bei allen Rechnern funktioniert?
Zuerst einmal müßtest du mal sagen, was nicht funktioniert.

Dann ist die Frage um welche Art von Datei es sich wirklich handelt. (Kodierung)

Gruß
 
Mein Programm schein zu funktionieren. Es gibt offensichtlich Probleme mit der Zeichendarstellung - ANSI bzw. Unicode - auf den verschiedenen Rechnern (Konsole von Ubuntu). Ich hab nähmlich mein Programm in der UNI getestet und da hat jede Texfileauswertung mit meinem geschriebenen Programm reibungslos funktioniert. Die benutzen die neue Version 11.04. Aber bei mir zu Hause klappt das nicht. Benutze aber die gleiche Ubuntuversion. Irgendetwas muss ich doch noch einstellen können, damit auch bei mir die Textfilauswertung funktioniert. Ich dachte da es läge an der Zeichendarstellung bei mir unter Ubuntu.

Mein Problem ist doch nur das ich manche Textfile meinem Programm übergebe und er das Ergebnis auf der Konsole anzeigt und bei - ich nehme an txt-file in Unicode kodierte files - nicht.

Gruß
 
Zuletzt bearbeitet:
Das Problem ist also, das für bestimmte Dateien bei dir zu Hause nichts auf der Konsole angezeigt wird?

Nochmal: welche Kodierung wird in den Dateien verwendet?

Gruß
 
Das kann ich leider nicht sagen, weil ich die Dateien auch nur gestellt bekommen habe, um mein Programm zu testen. Also das könnte alles von Unicode-Standarts sein und ANSI. Aber ANSI macht er ja ohne Probleme bei mir und in der UNI. Nur die Dateien in Unicode funktionieren nur in der UNI.

Gruß.
 
Zurück