2015-11-15 46 views
1

你好堆棧溢出的人。我和我的朋友正在用Batch/.bat編程語言製作遊戲。直到這一點,我們沒有任何問題,我們無法修復。但是,當我開始將它翻譯成西班牙語版本時,我們遇到了問題。當我試圖讓這個程序用西班牙語重音(例如Á,É)時,它不起作用。我建立了一個測試頁面,其程序回顯爲"áéíóú",但它出來了其他內容,我現在無法複製和粘貼。當我測試俄羅斯/西里爾鍵盤時,遇到了類似的問題。在測試俄語時,我將字符集設置爲437,測試口音時設置爲1251。當我保存它時,甚至在Bat文件代碼中更改了特殊字符。我需要做些什麼才能讓特殊字符出現?同樣,我只是試圖在echo命令中使用它們。如何在批處理中的echo命令中使用重音字符?

回答

1
  • 保存在UTF-8 批處理文件沒有BOM簽名並使用UTF-8代碼頁:

    chcp 65001 >nul 
    echo Päivää Привет Hello 
    
  • 或做與每種語言的消息文件和將它保存爲Unicode編碼(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'時,它正確顯示了行。非常感謝。這一直讓我永遠難忘。 –

相關問題