http://bugs.winehq.org/show_bug.cgi?id=35592
Bug ID: 35592 Summary: Chinese input encoding error in multi-byte character set exe with mac driver Product: Wine Version: 1.7.12 Hardware: x86 OS: Mac OS X Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 Assignee: wine-bugs@winehq.org Reporter: hwei.sy@gmail.com Classification: Unclassified
The exe is compiled in multi-byte character set (not Unicode). When input Chinese, the characters become corrupted.
I looked into this problem, and found that it is due to dlls/user32/message.c@get_input_codepage
The "GetKeyboardLayout" returns a wrong language identifier 0x0404 (Chinese Traditional), but it should be 0x0804 (Chinese Simplified). This may be mac driver's problem.
And I don't think the 1st parameter of "GetLocaleInfoW" should be the language identifier of the keyboard (returned from "GetKeyboardLayout"). It should be constant "LOCAL_USER_DEFAULT". The keyboard language identifier does not always match the code page of a program. The keyboard language identifier can be changed by switching input method, but code page of a program can not change.