Using non-ASCII characters in a cmd batch file

前端 未结 4 1368
小蘑菇
小蘑菇 2020-12-20 19:07

I\'m working on a .bat program, and the program is written in Finnish. The problem is that CMD doesn\'t know these \"special\" letters, such as Ä, Ö, Å.

相关标签:
4条回答
  • 2020-12-20 19:13

    Theoretically you just need to use the /u (Unicode) switch:

    c:\>cmd /u
    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
    
    c:\>echo Ä
    Ä
    
    0 讨论(0)
  • 2020-12-20 19:14

    The command prompt uses DOS encoding. Windows uses ANSI or Unicode.

    PS I'm assuming you are in the US with code page 437 rather than international English/Western European 850.

    So I used Character Map to get the DOS code then find out what ANSI character that code maps to.

    This is the notepad contents.

    echo Ž„™”†
    

    Which was made by putting the DOS codes for your characters into notepad.

    0142, 0132, 0153, 0148, 0143, 0134 which display as the above ANSI characters.

    Command prompt output

    C:\Windows\system32>echo ÄäÖöÅå
    ÄäÖöÅå
    

    Alt + Character Code [Prev | Next | Contents]

    Holding down alt and pressing the character code on the numeric keypad will enter that character. The keyboard language in use must support entering that character. If your keyboard supports it the code is shown on the right hand side of the status bar in Character Map else this section of the status bar is empty. The status bar us also empty for characters with well known keys, like the letters A to Z.

    However there is two ways of entering codes. The point to remember here that the characters are the same for the first 127 codes. The difference is if the first number typed is a zero of not. If it is then the code will insert the character from the current character set else it will insert a character from the OEM character set. Codes over 255 enter the unicode character and are in decimal. Characters entered are converted to OEM for Dos applications and either ANSI or Unicode depending on the Windows' application. See Converting Between Decimal and Hexadecimal.

    E.G., Alt + 0 then 6 then 5 then release Alt enters the letter A

    From Shortcut Keys and Key Modifiers by Me at https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw

    0 讨论(0)
  • 2020-12-20 19:27

    Try putting this line at the top of the batch file:

    chcp 65001
    

    It should change the console encoding to UTF-8, and you should be able to read the file properly in the script after that.

    0 讨论(0)
  • 2020-12-20 19:39

    If you use Notepad++, you can simply change the charset. Doing this will allow you to write letters from desired charset. The western region -US. should support it.

    You can do it in a drop down menu in Notepad++ or by hand by writing chcp 437. But I recommend doing this in Notepad++ as it will show you the output as it will be in the batch. So you will then easily see if you use the right code page. And at same time it's easy to switch if you want more special symbols. You can also as stated in previous posts. Try UTF-8.

    You can read more about this here: http://ss64.com/nt/chcp.html. And here's a list over different code pages (check out the OEM pages): Code Page Identifiers

    0 讨论(0)
提交回复
热议问题