小编Lor*_*nzo的帖子

使用 Windows WinAPI 函数写入控制台 Unicode (UTF-16) 文本?

我有一个 64 位 masm 代码,可以输出到控制台。问题是,通过使用WriteConsoleW,我无法重定向命令或任何内容的输出,因为它只写入控制台缓冲区。但使用WriteFile会在每个字符之间添加空格,因为 16 位字符的高位已清零。如何使用 打印 Unicode 文本WriteFile

在这里读到我可以使用 BOM,但这对我不起作用(我添加了另一个调用,该调用在第二次调用之前WriteFile写入两个字节,但它只打印了一个白色矩形,没有其他内容)。FF FEWriteFile

这是代码:

extern GetStdHandle: proc
extern WriteConsoleW: proc
.data?
    written dq ?
.data
    string dw 0048h,0065h,006ch,006ch,006fh,0020h,0057h,006fh,0072h,006ch,0064h,0021h
    len equ $-string
.code
main proc
    push    rbp
    mov rbp, rsp
    sub rsp, 020h
    and rsp, -10h

    mov rcx, -11
    call    GetStdHandle
    mov rcx, rax
    mov rdx, offset string
    mov r8, len
    mov r9, written
    call    WriteConsoleW

    add rsp, 020h …
Run Code Online (Sandbox Code Playgroud)

unicode console assembly x86-64 masm

3
推荐指数
1
解决办法
864
查看次数

标签 统计

assembly ×1

console ×1

masm ×1

unicode ×1

x86-64 ×1