如何在批处理中使用echo命令中的重音字符?

时间:2015-11-15 18:33:58

标签: windows batch-file special-characters

Stack Overflow的大家好。我和我的朋友正在使用Batch / .bat编程语言制作游戏。到目前为止,我们没有遇到任何我们无法解决的问题。然而,当我开始将其翻译成西班牙语时,我们遇到了问题。当我试图用西班牙语用口音(例如Á,É)让程序“回声”时,它就行不通。我已经设置了一个测试页面,其中包含程序echo "áéíóú",但它出现了其他内容,我现在无法复制和粘贴它。当我测试俄语/西里尔语键盘时,我遇到了类似的问题。我在测试重音时将字符集设置为437,在测试俄语时将其设置为1251。当我保存它时,特殊字符甚至在Bat文件代码中发生了变化。为了让特殊字符出现,我需要做些什么特别的事吗?我再次尝试在echo命令中使用它们。

2 个答案:

答案 0 :(得分:1)

  • 将批处理文件保存为UTF-8 ,无需BOM签名并使用UTF-8代码页:

    goto
  • 或者为每种语言制作包含消息的文件,以unicode编码(UTF-16LE)保存

    chcp 65001 >nul
    echo Päivää Привет Hello
    

    然后加载翻译:

    en.hello=Hello
    .......other messages
    fi.hello=Päivää
    .......other messages
    

    现在默认情况下应正确显示消息,因为系统控制台代码页通常对应于区域设置中设置的语言。

      

    Päivää

    您可以将这些消息以可读形式保存在保存为UTF-8 而没有BOM签名的批处理文件中,并使用嵌入式VBScript / powershell代码在UTF16-LE中提取到set LANGUAGE=fi ............... for /f "tokens=1* delims=." %%a in ('type "%~dp0messages.txt') do ( if "%%a"=="%LANGUAGE%" set "msg.%%b" ) ............... echo %msg.hello% 编码:

    messages.txt

    然后按上图所示加载它。

答案 1 :(得分:-1)

在批处理文件中使用

SETLOCAL EnableDelayedExpansion

@CHCP 65001> NUL