Brandon DuRette
Brandon DuRette

Reputation: 4870

Is there a Windows command shell that will display Unicode characters?

Assuming I have fonts installed which have the appropriate glyphs in them, is there a command shell for Windows XP that will display Unicode characters? At a minimum, two things that should display Unicode correctly:

Here's what I've tried so far:

No luck. I even tried installing custom fonts for cmd/PowerShell. PowerShell and cmd.exe seem to be Unicode-aware in the sense that I can copy/paste the non-printable box out of there and it will paste into other apps with the correct characters. Cygwin (?) seems to convert to the ? character and that comes through in the copy/paste.

Any ideas?

Upvotes: 53

Views: 55293

Answers (12)

david m lee
david m lee

Reputation: 2647

A fast and convenient way to do it is on the Explorer.

    1. Open the Explorer window.
    2. Traverse to the top level of directory where you want to find.
    3. On the upper right corner, there is a find field.

Upvotes: -5

Alon Or
Alon Or

Reputation: 838

Open an elevated command prompt (run cmd as administrator). Query your registry for available TrueType fonts to the console by:

REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"

You'll see an output like:

0    REG_SZ    Lucida Console
00    REG_SZ    Consolas
936    REG_SZ    *新宋体
932    REG_SZ    *MS ゴシック

Now we need to add a TrueType font that supports the characters you need like Courier New, we do this by adding zeros to the string name, so in this case the next one would be "000" :

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

Now we implement UTF-8 support:

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f

Set default font to "Courier New":

REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f

Set font size to 20 :

REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f

Enable quick edit if you like :

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f

Upvotes: 3

Kim
Kim

Reputation: 1462

Try Console 2. Be careful with the colors/palette configurations though. Those are a bit buggy. I have confirmed them to not work; they behave like cmd.exe.

Upvotes: 2

karl prosser
karl prosser

Reputation:

For a true shell, try PowerShell Plus. You can select Unicode fonts and work with other languages, not only in the editor, but in the true console.

Upvotes: 2

Don Jones
Don Jones

Reputation: 9497

This was a major issue in PowerShell v1. Version 2 is shipping with a "graphical shell" that corrects the problem, which is ultimately not with PowerShell, but with the Windows console host (which Cmd.exe also uses). You can get the current CTP for PowerShell v2, if you want.

Actually, PowerShell v2.0 was finalized and shipped with the release of Windows 7 and Windows Server 2008 R2 in early August. In addition, the backported versions (Windows Vista/2008) reached their Release Candidate milestone just the other day; Windows XP/Windows Server 2003 should follow very shortly. Linky linky.

Upvotes: 19

user2718593
user2718593

Reputation: 131

Also from UTF-16 on cmd.exe

    Open/run cmd.exe
    Click on the icon at the top-left corner
    Select properties
    Then "Font" bar
    Select "Lucida Console" and OK.
    Write Chcp 10000 at the prompt
    Finally dir /b

Upvotes: -1

iegik
iegik

Reputation: 1477

Try this:

powershell.exe -NoExit /c "chcp.com 65001"

Who uses msysgit:

powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"

Do not forget to change font of window to TrueType font with UTF-8 support ("Lucida Console")

Upvotes: 5

nneonneo
nneonneo

Reputation: 179552

As of November 2011, MinTTY is now Cygwin's default terminal emulator (installed by setup.exe). MinTTY is a fork of PuTTY's terminal emulator, and as such sports proper Unicode support and much-improved compatibility with other terminal emulators.

Upvotes: 1

crusherjoe
crusherjoe

Reputation: 31

This is how I can got Chinese output in cmd.exe running on Windows 7 Pro English Version. I also tried file names with Japanese, Russian, and Polish and they all seem to display correctly. Input also seems to work, at least when I tried to do a dir xxx* containing non-ascii characters.

  1. Install console2, which is a front-end to cmd.exe (and other shells)

  2. After installation, follow these instructions

    Delete the key HKEY_CURRENT_USER\Console\Console2 command window in the registry.

    Import the following data into windows registry:

    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Console\Console2 command window] 
    "CodePage"=dword:000003a8 
    "FontSize"=dword:000a0000 
    "FontFamily"=dword:00000036 
    "FontWeight"=dword:00000190 
    "FaceName"="細明體" 
    "HistoryNoDup"=dword:00000000
    
  3. You may or may not have to change the font. Initially I had the font set to @NimSum, and the Chinese characters came out rotated 90 degrees. Then I switched to NimSum (without the @) and it came out correctly. Then just out of curiosity I switched to Consola and yet I can still see the Chinese characters. So I'm not sure if you actually have to set the font or not.

Upvotes: 3

Robin Smidsrød
Robin Smidsrød

Reputation: 487

PowerShell V2 CTP3 inside Console2 seems to do that. The only downside is that the default console encoding is UCS-2 LE instead of UTF-8.

Upvotes: 0

McDowell
McDowell

Reputation: 108949

To do this with cmd.exe, you'll need to use the console properties dialog to switch to a Unicode TrueType font.

Then use these commands:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

Commands:

  • Switch console to UTF-8 (65001)
  • Redirect output of DIR to UTF8.TXT
  • Dump UTF-8 to console

The characters will still need to be supported by the font to display properly on the console.

I18N: Unicode at the Windows command prompt (C++; .Net; Java)

Upvotes: 43

Kim
Kim

Reputation: 1462

Setting the codepage to UTF-8 with the command "chcp 65001" should help you print file contents correctly to the shell (using cmd.exe). This won't work for directory listings though (UTF-16 encoding in NTFS file names).

Upvotes: 10

Related Questions