From: Jeroen v. d. Z. <je...@fo...> - 2008-05-19 15:03:08
|
On Sunday 18 May 2008, Shikata Hidenori wrote: > Hi. I found a problem when I typed in Japanese filename with > FXFileDialog. Please let me just report it without knowing how to fix > it. > > What happened was I typed in three Japanese Kanji characters + > extension ".txt" in FXFileDialog to save the content in adie. After I > save it to the file, the file name was partially messed up. What I > used was adie compiled as x64 binary. When I did exactly the same > thing using adie build as win32 binary (and on 32bit windows), the > filename appeared just fine. > > The byte string of the filename was (in the form of utf-8) > > 0xe6, 0x97, 0xa5, 0xe6, 0x9c, 0xac, 0xe8, 0xaa, 0x9e, 0x2e, 0x74, > 0x78, 0x74, 0x00 > > and the string was correctly stored in FXTextField. In > FXFileSelector::getFilename, it calls FXPath::expand and subsequently > ExpandEnvironmentStringA gets called. After this call, 9th and 10th > byte in the string were altered to 0x86 and 0x45, respectively, > resulting in partially messed up string. > > Again, this doesn't seem to happen on win32. Does anyone have an idea > how to fix this? Possibly, we should replace the call to ExpandEnvironmentStringA with the wide-character version of the same. Unfortunately, this means converting between utf8 and utf16 and back. Maybe we should simply write our own version of this as it may be less work [both for the computer and for the implementor]. I will look into this. I also notice the FXSystem::getEnvironment() seems to use the non-unicode version also. This probably should be fixed as well... Regards, - Jeroen |