also ich bin ziemlich ratlos.
zunächst einmal mein momentaner Stand:
ich habe ein Minimalbeispiel, einfacher Dialog mit einem Label und einem
Textfeld, in beide schreibe ich Text mit Umlauten ('Ätsch')
das ganze wird korrekt dargestellt, wenn ich das Programm aus eclipse
heraus aufrufe.
Das ganze wird fehlerhaft dargestellt, wenn ich das Programm aus dem
Terminal aufrufe. Dabei wird aus 'Ätsch' (b'\xc3\x84tsch') ein
'�tsch' (b'\xef\xbf\xbdtsch') und das erste Zeichen ist ein Replacement
Character.
Das heißt doch, das von python3 richtig übergebene Zeichen wird von pyqt
als nicht darstellbar interpretiert und durch das Replacement Character
ersetzt. Aber nur, wenn das Programm vom Terminal aus aufgerufen wird.
Das deutet auf einen Konfigurationsfehler im Terminal hin.
locale liefert
wolfgangslaptop:~ wolfgang$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"
und es gibt in ./MacOSX/environment.plist einen Key LC_ALL mit dem Wert
de_DE.UTF-8. Das sollte eigentlich so passen.
Nun habe ich gedacht, lass doch das ganze mal unter einem anderen User
laufen und erhalte dort (gleiches locale)
#########################################################################
wolfgangslaptop:src adminloc$ python3 minimalbeispiel.py
Sat Jun 15 12:24:04 wolfgangslaptop.fritz.box Python[3948] <Error>:
kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors
as they are logged.
_RegisterApplication(), FAILED TO establish the default connection to
the WindowServer, _CGSDefaultConnection() is NULL.
b'\xc3\x84'
utf-8
0041 0308
test: b'\xc3\x9f'
2013-06-15 12:24:05.229 Python[3948:d07] An uncaught exception was raised
2013-06-15 12:24:05.230 Python[3948:d07] Error (1002) creating CGSWindow
2013-06-15 12:24:05.232 Python[3948:d07] *** Terminating app due to
uncaught exception 'NSInternalInconsistencyException', reason: 'Error
(1002) creating CGSWindow'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff81065784
__exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff83976f03
objc_exception_throw + 45
2 CoreFoundation 0x00007fff810655a7
+[NSException raise:format:arguments:] + 103
3 CoreFoundation 0x00007fff81065534
+[NSException raise:format:] + 148
4 AppKit 0x00007fff802ddf52
_NSCreateWindowWithOpaqueShape2 + 473
5 AppKit 0x00007fff80272691 -[NSWindow
_commonAwake] + 1214
6 AppKit 0x00007fff802901c9 -[NSWindow
_makeKeyRegardlessOfVisibility] + 96
7 AppKit 0x00007fff8029013e -[NSWindow
makeKeyAndOrderFront:] + 24
8 QtGui 0x000000010292c593
_ZN14QWidgetPrivate8show_sysEv + 1123
9 QtGui 0x00000001029ecd38
_ZN14QWidgetPrivate11show_helperEv + 408
10 QtGui 0x00000001029ed06f
_ZN7QWidget10setVisibleEb + 511
11 QtGui 0x0000000102e38737
_ZN7QDialog10setVisibleEb + 103
12 QtGui.so 0x00000001023707fc
_ZN10sipQDialog10setVisibleEb + 108
13 QtGui.so 0x0000000102386318
meth_QWidget_show + 104
14 Python 0x00000001000de02e
PyEval_EvalFrameEx + 29774
15 Python 0x00000001000df1b8
PyEval_EvalCodeEx + 2296
16 Python 0x00000001000df27f
PyEval_EvalCode + 63
17 Python 0x000000010010639b
PyRun_FileExFlags + 187
18 Python 0x00000001001066b6
PyRun_SimpleFileExFlags + 598
19 Python 0x000000010011d783 Py_Main + 3203
20 Python 0x0000000100000e0e 0x0 + 4294970894
21 Python 0x0000000100000c54 0x0 + 4294970452
)
terminate called after throwing an instance of 'NSException'
Abort trap
#########################################################################
Kann jemand diese Fehlermeldung interpretieren und mir sagen, ob ich
eher einen Fehler in der Konfiguration des Terminals suchen muss, oder
einen Fehler in pyqt?
Ich bin für jeden Tipp dankbar
Wolfgang