2015-11-15 2 views
1

Привет людей переполнение стека. Я и мой друг делают игру на языке программирования Batch/.bat. До этого момента у нас не было проблем, которые мы не могли исправить. Однако, когда я начал переводить его в испанскую версию, у нас возникли проблемы. Когда я попытался использовать слова «эхо» программы на испанском языке с акцентами (например, Á, É), это не сработает. Я установил тестовую страницу с программой echo "áéíóú", но она вышла с чем-то еще, я не могу ее скопировать и вставить прямо сейчас. У меня возникла аналогичная проблема, когда я тестировал русскую/кириллическую клавиатуру. Я установил набор символов в 437 при тестировании акцентов и 1251 при тестировании русского языка. Когда я сохранил его, специальные символы даже изменились в коде файла Bat. Есть ли что-то особенное, что мне нужно сделать, чтобы отобразить специальные символы? Опять же, я только пытаюсь использовать их в команде echo.Как использовать символы с акцентом в команде echo в Batch?

ответ

1
  • Сохраните пакетный файл в кодировке UTF-8 без BOM подписи и использовать UTF-8 кодовую:

    chcp 65001 >nul 
    echo Päivää Привет Hello 
    
  • Или сделать файл с сообщениями для каждого языка и сохранить его в кодировке Юникод кодирование (UTF-16LE):

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

    Затем загрузите переводы:

    set LANGUAGE=fi 
    ............... 
    for /f "tokens=1* delims=." %%a in ('type "%~dp0messages.txt') do (
        if "%%a"=="%LANGUAGE%" set "msg.%%b" 
    ) 
    ............... 
    echo %msg.hello% 
    

    Теперь сообщения должны отображаться правильно по умолчанию, поскольку кодовая страница системной консоли обычно соответствует языку, установленному в региональных настройках.

    Päivää

    Вы можете сохранить эти сообщения в читаемом виде внутри файла пакетного сохранить как UTF-8 без BOM подписи и использовать встроенный VBScript код/​​Powershell добывать messages.txt в UTF16- LE:

    ::msg.en.hello=Hello 
    ::msg.fi.hello=Päivää 
    powershell -c "Get-Content '%~f0' -encoding UTF8 | Select-String -Pattern '^::msg\.' | ForEach-Object {$_ -replace '::msg.',''} | Set-Content '%temp%\messages.txt' -encoding Unicode" 
    

    А затем загрузить его, как показано выше.

+0

Когда я делал 'chcp 65001', он отображал строки правильно. Огромное спасибо. Это навсегда загломило меня. –

Смежные вопросы