It seems like makensis does a conversion to char* at some point, a simple UTF16LE .nsi with some non-ascii characters do not make it all the way from input to output without a conversion that corrupts it.
Test script: !echo "ĦĔĹĽΘ ŴØŖĿĎ" ;I don't know if the issue tracker can handle this so I also attached the script !error AbortTest
Output from makensis.exe test.nsi: --snipped-- Processing script file: "test.nsi" ????? ?╪??? (test.nsi:1) !error: AbortTest --snipped--
type test.nsi shows the correct output.
cmd.exe is running with a true type font (Lucida Console). I also tried running chcp 65001 first but that did not help...
- test.nsi 76
Comment #1
Posted on Mar 12, 2012 by Massive RabbitThe problem is not with makensis but with cmd.exe. The cmd.exe can't really handle Unicode. You have to use makensisw.exe to see the Unicode output.
Comment #2
Posted on Mar 13, 2012 by Quick MonkeySaying the console cannot handle Unicode is simply not true, it cannot handle RTL and things that require Uniscribe but it can display a lot of the BMP.
See http://i39.tinypic.com/2guxjrp.png
See also: Anyone who says the console can't do Unicode isn't as smart as they think they are: http://blogs.msdn.com/b/michkap/archive/2010/04/07/9989346.aspx
Comment #3
Posted on Mar 13, 2012 by Massive RabbitIt looks like you are right it looks like WriteConsoleW is your friend. I will have to take a look to see how to best fit it into the code. I'll keep this issue open and consider it for the next release.
Status: Accepted
Labels:
Type-Defect
Priority-Medium