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