Sonderzeichen in cmd

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 10:25

hallo,
ich weiß dass dieses leidige Thema schon öffter kam, aber ich begreife es einfach nicht :

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

print u"\u20ac".encode("cp1252")
j=int_input(u'\nrichtig?:')

jetzt hätte ich gerne das € symbol. Warum funktioniert das nicht auf der Windows Konsole?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 23. Oktober 2008, 10:35

Kann denn "cp1252" das Symbol darstellen?
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 10:44

richtig :oops: , geht nicht,

gibt es ein anderes encoding was auf der CMD funktioniert?

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print u"\u03d1".encode("cp1252")
j=raw_input(u'\nrichtig?:')
hier müßte ϑ stehen, aber soweit ich weiß kann man in der CMD nur cp850 und cp1252 verwenden, falsch??
BlackJack

Donnerstag 23. Oktober 2008, 11:08

Also das €-Zeichen kann man in cp1252 kodieren. Die "Eingabeaufforderung" verwendet aber AFAIK standardmässig eine "DOS-kompatible" Kodierung und da ist das €-Zeichen nicht enthalten.

Genausowenig wie das griechische kleine ("script") Theta.

Die Kodierung der Eingabeaufforderung kann man mit irgendeinem "DOS"-Befehl auch auf andere Kodierungen umstellen, vielleicht sogar über das Menü des Fensters!? Grundsätzlich würde ich aber sagen ist so ein "DOS-Terminal" nicht so gut für beliebige Ausgaben von Unicode-Zeichen geeignet.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 11:19

danke,
dann müßte ich mir ja ein anderes Terminal suchen bzw. schreiben, was eingaben annehmen und Ausgaben machen kann..... gibts da evtl. was??
ich habe halt die cmd genommen, weil sie auf jedem Win-Rechner vorh. ist.
BlackJack

Donnerstag 23. Oktober 2008, 12:22

`Tkinter` gehört zur Python-Standardbibliothek und kommt mit Unicode-Zeichen klar. Da kannst Du dann sogar mit verschiedenen Schriftgrössen arbeiten.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 12:41

ist es aufwändig (für einen eher ungeübten), eine Konsole zu programmieren, die wie eine CMD funktioniert??

ich brauche lediglich:

print eine Zeile
gib eine Variable ein (Buchstabe, Zahl)
reche etwas
und gib das ergebnis aus (Text)


hier mal ein Beispiel:

Code: Alles auswählen

        while True:
            try:
                print u'gegeben: x | gesucht: y '
                X1=float_input(u'Wert X1 mit X1<x: ')
                X2=float_input(u'Wert X2 mit X2>x: ')
                Y1=float_input(u'Wert Y1 mit y=?: ')
                Y2=float_input(u'Wert Y2 mit y=?: ')
                x=float_input (u'Wert x: ')
                y=(x-X1)*(Y2-Y1)/(X2-X1)+Y1
                print u'Ergebnis y= ',y
            except (ValueError,ZeroDivisionError):
                print u'****Rechenfehler: Eingaben prüfen!?! ****'
            foo = ask_raw_input(u'erneute Iteration (j/N)? [N] ','n') 
            if foo.lower()=='n' or foo=='0': 
                break
BlackJack

Donnerstag 23. Oktober 2008, 12:56

Ich würde sagen, ja das ist "schwierig" weil GUI-Programmierung anders funktioniert. Da gibt man nicht die Reihenfolge der Abfragen und Ausgaben so vor, sondern reagiert auf Ereignisse die der Benutzer auslöst.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 13:02

nicht schön,

müßte ich das neu erfinden? ich könnte mir vorstellen, dass soetwas nicht das 1. Mal überlegt wird.

google hilft leider nicht
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 23. Oktober 2008, 13:21

mathi hat geschrieben:dann müßte ich mir ja ein anderes Terminal suchen bzw. schreiben, was eingaben annehmen und Ausgaben machen kann..... gibts da evtl. was??
Ubuntu ;)

Vielleicht hilft dir ja das SourceForge-Projekt "Console", dort wird auch CMD verwendet, aber vielleicht nutzt das ja einen besseren Zeichensatz.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 13:26

Leonidas hat geschrieben:Ubuntu
Leider werden einige für mich wichtige Programme (kommerzielle) nicht für Linux angeboten (Statik Software), deshalb scheidet das aus :-(


Console nutzt cp850 :cry:
Zuletzt geändert von mathi am Donnerstag 23. Oktober 2008, 13:37, insgesamt 1-mal geändert.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 23. Oktober 2008, 13:32

mathi hat geschrieben:Leider werden einige für mich wichtige Programme (kommerzielle) nicht für Linux angeboten (Statik Software), deshalb scheidet das aus :-(
Wenn du schon darauf eingehst: Wine und VirtualBox existieren, sind kostenlos und frei.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Donnerstag 23. Oktober 2008, 13:37

Vielleicht wäre EasyGUI was für Dich. Das lässt einen weiterhin linare Programmabläufe schreiben:

Code: Alles auswählen

from easygui import msgbox, multenterbox, ynbox


def main():
    values = list()
    while True:
        values = multenterbox(u'gegeben x | gesucht: y',
                              u'Berechnung',
                              ('Wert X1 mit X1<x',
                               'Wert X2 mit X2>x',
                               'Wert Y1 mit y=?',
                               'Wert Y2 mit y=?',
                               'Wert x'),
                               values)
        if values is not None:
            try:
                x_1, x_2, y_1, y_2, x = map(float, values)
                y = (x - x_1) * (y_2 - y_1) / (x_2 - x_1) + y_1
            except (ValueError, ZeroDivisionError):
                msgbox(u'**** Eingabe prüfen!?! ****', u'Fehler')
            else:
                msgbox(u'y = %f' % y, u'Ergebnis')
        if not ynbox(u'Erneute Iteration?', u'Weiter?', ('Ja', 'Nein')):
            break
Ist ein einzelnes Python-Modul und basiert auf `Tkinter`.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Donnerstag 23. Oktober 2008, 13:51

vielen Dank für die Mühe,
dass könnte was für mich sein. Leider läuft das Programm so nicht in IDLE und ich weiß nicht warum.

IDLE 1.2.2
>>> ================================ RESTART ================================
>>>
>>> ================================ RESTART ================================
>>>
>>> ================================ RESTART ================================
>>>


ok, habe es geschafft es laaufen zu lassen :-)
>>>
Zuletzt geändert von mathi am Donnerstag 23. Oktober 2008, 14:33, insgesamt 1-mal geändert.
BlackJack

Donnerstag 23. Oktober 2008, 14:23

Weil IDLE selber `Tkinter` benutzt und deshalb Probleme damit hat, wenn man das auch tut.
Antworten