[NTG-context] non-ascii chars in cmd.exe (Windows)

Pablo Rodriguez oinos at gmx.es
Fri Nov 13 14:49:19 CET 2020


On 11/12/20 10:55 PM, Hans Hagen wrote:
> On 11/12/2020 10:39 PM, Pablo Rodriguez wrote:
>> Dear list,
>>
>> I have the following sample:
>>
>>    \starttext
>>    \startluacode
>>    io.write(' Name? ')
>>    document.name = io.read() or ''
>>    \stopluacode
>>    \cldcontext{document.name} is the name.
>>    \stoptext
>> [...]
>> I’m using current latest (ConTeXt MkIV 2020.11.08 12:42).
>>
>> I’m not sure what I am missing or whether I have hit a bug.
>
> This has been discussed before I think. It has to do with how you
> configured your system (what encoding) and how consisteltly you take
> that into account. If you have some mixed setup, just don't use non-ascii.

Many thanks for your reply, Hans.

I use chcp 65001. I have no problem displaying UTF-8 messages and
passing arguments with UTF-8 characters.

> Anyway, in LMTX all file, commandline and systemn operations are utf 8
> and on windows get translated into wide system calls so there it should
>   work ok if you use utf8.

Well, according to https://ss64.com/nt/cmd.html the console uses
UTF-16LE. Or UCS-2 (as described in
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/#console-built-in-a-pre-unicode-dawn).

Since console input is UTF-16LE, I guess I may need something in Lua
similar to 'regimes.translate(str, "utf16le")'.

How can I convert a string from UTF-16LE (into UTF-8)?

Many thanks for your help,

Pablo
--
http://www.ousia.tk


More information about the ntg-context mailing list