ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
1009
1009
EMPFEHLEN
-
Ich habe ein C++-Projekt, welches ich nicht direkt mit Visual Studio 2010 baue. Als Konfigurationstyp habe ich "Makefile" ausgewählt und unter NMake, "Buildbefehlszeile" rufe ich eine bat-Datei auf, die dann das eigentliche Bauen vornimmt. Die Ausgabe landet im Ausgabe-Fenster von Visual Studio und genau in diesem habe ich das Problem.
Rufe ich die Datei in der Konsole (z.b. "Visual Studio-Eingabeaufforderung") auf, ist die Ausgabe noch normal. "chcp" sagt 850 als Codepage. In Visual Studio wird hingegen scheinbar alles, was über 7Bit-ASCII ist, verändert. Zumindest wird z.B. ein » (0xAF) zu ┬╗. Die erstellte log-Datei ist UTF-8, indem diese Zeichen ┬╗ dann entsprechend als 0xE2 94 AC 0xE2 95 97 vorkommen.
Meine Frage wäre nun, wie ich das Visual Studio Ausgabe-Fenster dazu bekomme, die Ausgaben korrekt wieder zu geben.
Ich habe bereits im Internet gesucht, aber entweder finde ich nur wie man Erweiterungen für Visual Studio erstellt und dabei etwas in das Ausgabe-Fenster schreibt oder Dinge die noch weniger mit meinem Problem zu tun haben.
Vielen Dank im Voraus,
Bactunius
PS: Ich war mir nicht sicher, ob ich das hier nach "Programmierung, C/C++, VS &MFC" packen sollte, oder ob es vllt. eher nach "Computer & Devices, Microsoft Windows" gehört.
-
Hallo Bactunius,
auf welche Weise erfolgt denn die Ausgabe? Ich hab das grad mal selber ausprobiert und als Buildskript folgende Batch-Datei verwendet:
Im Editor in der Codepage 850 gespeichert ergibt das sowohl in der Konsole als auch in Visual Studio die AusgabeCode :1 2 3
@echo off chcp echo »
Auch im Buildlog, das in UTF-8 kodiert ist, wird das Zeichen richtig angezeigt.Code :1 2
Aktive Codepage: 850. »
Kannst du vielleicht ein Minimalbeispiel erstellen, bei dem die Ausgabe bei dir nicht klappt?
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Hallo,
danke für die Antwort.
Ich habe mal ein Minimalbeispiel erstellt. Die Bat-Datei entspricht dabei deiner Angabe. Bei der Ausgabe in Visual Studio erscheint dann bei mir:
Als ich die Bat-Datei im Hex-Editor angesehen habe, viel mir auf, dass das Zeichen » nicht 0xAF, sondern 0xBB ist. Von Hand auf 0xAF geändert erscheint die Ausgabe auch in Visual Studio korrekt.Code :1 2 3 4 5 6 7
[...] 1>Build: 1> Aktive Codepage: 850. 1> ╗ 1> 1>Das Erstellen war erfolgreich. [...]
Nun habe ich die Ausgabe der Konsole in eine Datei umgeleitet und » ist dort 0xC2 0xBB, also die UTF-8-Variante. Warum es bei Codepage 850 aber korrekt ausgegeben wird, weiß ich nicht so ganz. Es erklärt aber warum es bei Visual Studio so komisch aussieht, er wandelt die UTF-8-Ausgabe von 850 in UTF-8 um.
Falls das Beispiel dennoch gewollt sein sollte habe ich es mal angehangen.
Nun stellt sich mir allerdings die Frage, wie ich Visual Studio dazu bekommen anzunehmen, dass die Rückgabe UTF-8 ist. Ich habe es schon einmal mit "chcp 65001" am Anfang der Batch-Datei versucht, doch das hat ihn nicht interessiert, obwohl chcp dann immer 65001 als aktive Codepage ausgegeben hat.
Anmerkung: Wenn ich übrigens "chcp 65001" in der Eingabeaufforderung verwende, funktioniert mein Bauen danach nicht mehr richtig.
Gibt es also eine Möglichkeit, dass Visual Studio einfach nur die Rückgabe als UTF-8 Interpretiert und nicht erst konvertiert?
Vielen Dank im Voraus,
Bactunius
-
10.10.11 08:07 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.Das liegt einfach daran, weil du die Datei im Windows CP-1252 ANSI Zeichensatz gespeichert hast. Du solltest aber eigentlich OEM CP-850 verwenden (so wie es in deiner Konsole eingestellt ist).
Wie hast du das umgeleitet?
Ja, leider funktionieren Batch Skripte mit UTF-8 nicht korrekt.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
Das, was die Batch-Datei macht, habe ich "von Hand" in der Eingabeaufforderung gemacht. Wenn dann die wichtigen Programme aufgerufen werden, habe ich mittels
Zitat von deepthroat
die Ausgabe in eine Datei umgeleitet, welche ich mir dann mit Visual Studio Hex-Editor angesehen habe.Code :1
Aufruf > ausgabe.txt
Wenn ich nichts umleite sieht für mich die Ausgabe in der Eingabeaufforderung von der Batch-Datei und der von Hand gleich aus.
Ich hatte es sowohl mit der Batch-Datei, als auch von Hand versucht. In beiden Fällen gibt das entscheidende Programm ein "Schreibfehler" aus, wa ich für eine ungünstige Übersetzung ins Deutsche halte.
Zitat von deepthroat
Vielen Dank im Voraus,
Bactunius
-
10.10.11 13:01 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.
Wo ist denn jetzt noch das Problem? Hast du die Batch Datei nun im Zeichensatz CP 850 gespeichert?
Was hast du gemacht? Deine Beschreibung ist so nutzlos.
Wenn ich bei mirmanuell ausführe, steht in test.txt:Code :1 2
chcp >test.txt echo » >>test.txt
wobei "»" == 0xAF entspricht.Code :1 2
Active code page: 850 »
Was genau hast du ausgeführt, was wird für ein Programm aufgerufen, wie lautet die Fehlermeldung?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
danke für die Antwort.
Ich baue mein Projekt nicht mit Visual Studio. Stattdessen habe ich eine Batch-Datei. Visual Studio habe ich so konfiguriert, dass es vom Konfigurationstyp "Makefile" ist und bei NMake wird die Batch-Datei aufgerufen. Diese Batch-Datei setzt dann die Entwicklungsumgebung auf und wirft das Bauen des Projektes an, indem er GNU Make aufruft.
Das ganze funktioniert auch ganz schön, nur die Ausgaben von GNU Make im Ausgabe-Fenster von Visual Studio wird falsch angezeigt. In der Eingabeaufforderung (z.B. mit CP850) sieht die Ausgabe jedoch korrekt aus.
In meinem letzten Beitrag hatte ich mich wieder auf die Original-Batch-Dateien, also die, die wirklich die Dateien erstellen, bezogen. Das habe ich allerdings vergessen zu erwähnen, Verzeihung.
Anstatt die Erstellungs-Batch-Datei in der Eingabeaufforderung auszuführen habe ich den Inhalt entsprechend von Hand aufgerufen und beim Aufruf von GNU Make die Ausgabe dann in eine Datei umgeleitet (z.B. mittels "make > ausgabe.txt").
Wenn es z.B. nichts bei make zu tun gibt, steht dann in der Datei, mit Hex-Editor betrachtet
Falls ich es nicht in eine Datei umleite, sondern direkt in der Konsole ausgebe (während chcp ein "850" ausgibt), dann sehe ich es dort korrekt:Code :1 2 3
00000000 6D 61 6B 65 3A 20 46 C3 BC 72 20 64 61 73 20 5A make: Für das Z 00000010 69 65 6C 20 C2 BB 61 6C 6C C2 AB 20 69 73 74 20 iel »all« ist 00000020 6E 69 63 68 74 73 20 7A 75 20 74 75 6E 2E 0A nichts zu tun.
Die Anzeige in Visual Studio gibt jedochCode :1
make: Für das Ziel »all« ist nichts zu tun.
aus.Code :1
make: Für das Ziel »all« ist nichts zu tun.
Öffne ich die Build-Log-Datei mit dem Hex-Editor an sieht entsprechender Abschnitt wie folgt aus:
Ich hoffe, alle Varianten kommen im Browser raus.Code :1 2 3 4 5
00000140 6D 61 6B mak 00000150 65 3A 20 46 E2 94 9C E2 95 9D 72 20 64 61 73 20 e: F├╠r das 00000160 5A 69 65 6C 20 E2 94 AC E2 95 97 61 6C 6C E2 94 Ziel ┬╗allâ” 00000170 AC C2 BD 20 69 73 74 20 6E 69 63 68 74 73 20 7A ¬Â½ ist nichts z 00000180 75 20 74 75 6E 2E u tun.

Sollte das Problem nur bei "nichts zu tun" auftreten, wäre es nicht so schlimm. Jedoch tritt das Problem auch auf, wenn Fehler im Code sind, die Fehlermeldungen sind dann ziemlich unleserlich.
Wie oben, habe ich die Erstellung-Batch-Datei per Hand eingegeben. Nachdem ich die Umgebung aufgesetzt habe, habe ich z.B. folgendes gemacht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
P:\code>chcp Aktive Codepage: 850. P:\code>make make: Für das Ziel »all« ist nichts zu tun. P:\code>chcp 65001 Aktive Codepage: 65001. P:\code>chcp Aktive Codepage: 65001. P:\code>make make: Schreibfehler P:\code>chcp Aktive Codepage: 65001. P:\code>chcp 850 Aktive Codepage: 850. P:\code>make make: Für das Ziel »all« ist nichts zu tun. P:\code>
Habe ich es diesmal geschafft das Problem verständlich auszudrücken? Sind die Informationen ausreichend? Ich habe versucht, diesmal jegliche Interpretation meinerseits weg zu lassen.
Gibt es Lösungsideen?
Vielen Dank im Voraus,
Bactunius
-
10.10.11 21:36 #8
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hallo,
bei dem Projekt bin ich auf Vorgaben angewiesen und deshalb gezwungen das so zu machen. Ich bin auch nicht glücklich darüber.
Die Angabe führt dazu, dass Visual Studio nun
ausgibt. Auch die Fehler sind leserlich.make: Nothing to be done for `all'.
Vielen Dank!
Bactunius
Ähnliche Themen
-
Ausgabe von text, wert etc. in Ausgabefenster
Von schuetzejanett im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 01.12.08, 08:25 -
JS-Code nur noch gehackstückel, Codierungs-Problem?
Von multimolti im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 30.08.07, 21:15 -
Ausgabefenster deaktivierbar?
Von Orphelina im Forum Flash PlattformAntworten: 1Letzter Beitrag: 27.06.05, 10:23 -
HTML Ausgabefenster
Von RienSte im Forum .NET ArchivAntworten: 3Letzter Beitrag: 03.03.05, 12:48 -
Debugging Meldungen in Ausgabefenster
Von flotschie im Forum .NET ArchivAntworten: 3Letzter Beitrag: 03.01.05, 12:45





Zitieren

Warum? Warum? 
Login






