WindowsコマンドラインでUnicode文字を使用する方法


317

Team Foundation Server(TFS)に、英語以外の文字(š)が含まれているプロジェクトがあります。ビルド関連のいくつかのスクリプトを作成しようとしたときに、問題に遭遇しました文字をコマンドラインツールに渡すことができません。コマンドプロンプトまたはそれ以外のものが混乱し、tf.exeユーティリティが指定されたプロジェクトを見つけられません。

.batファイルのさまざまな形式(ANSI、UTF-8とBOMの有無)を試し、JavaScript(本来はUnicode)でスクリプトを作成しましたが、うまくいきませんでした。プログラムを実行してUnicodeコマンドラインに渡すにはどうすればよいですか?


1
@JohannesDewender-コピーと貼り付けが間違っていますか?
Vilx-

2
Pythonの3.6:「Windows上のデフォルトのコンソール、そのバージョンを持つすべてのUnicode文字を受け入れる」(まあ、私にとってそのほとんど)しかし、あなたがコンソールを設定する必要があります。cmdまたはPythonのIDLEのウィンドウの上で右クリック( )、デフォルト/フォントで「Lucida console」を選択します。
JinSnow 2017年



2
@LưuVĩnhPhúc-いいえ、これはコンソールにテキストを表示するのではなく、Unicodeコマンドライン引数を渡すことに関するものです。コンソールはまったく関与しない可能性があります。
Vilx

回答:


68

私の経歴:私はコンソールでUnicode入出力を何年も使用しています(そして、毎日頻繁に使用しています。さらに、まさにこのタスクのためのサポートツールを開発しています)。次の事実/制限を理解している限り、問題はほとんどありません。

  • CMD「コンソール」は無関係の要素です。 CMD.exeコンソール(「コンソールアプリケーション」)の「内部」で動作する準備ができているプログラムの1つです。
  • AFAIKは、CMDUnicodeを完全にサポートしています。コードページがアクティブなときにすべてのUnicode文字を入力/出力できます。
  • WindowsのコンソールはUnicodeをサポートしていますが、完璧ではありません(「十分に良い」、以下を参照)。
  • chcp 65001非常に危険です。プログラムがWindowsのAPIの欠陥を回避するように特別に設計されていない場合(またはこれらの回避策があるCランタイムライブラリを使用している場合)は、確実に機能しません。 Win8はこれらの問題のfixesを修正しますcp65001が、残りはWin10にも適用できます。
  • で働いていcp1252ます。すでに述べたように、コンソールでUnicodeを入出力するには、コードページを設定する必要はありません

詳細

  • Unicodeをコンソールに読み書きするには、アプリケーション(またはそのCランタイムライブラリ)がFile-I/O、APIではなくAPI を使用できるほどスマートでなければなりませんConsole-I/O。(例については、Pythonがどのように実行するかを参照してください。)
  • 同様に、Unicodeコマンドライン引数を読み取るには、アプリケーション(またはそのCランタイムライブラリ)が、対応するAPIを使用できるほどスマートでなければなりません。
  • コンソールのフォントレンダリングは、BMPのUnicode文字のみをサポートします(言い換えると、以下U+10000)。シンプルなテキストレンダリングのみがサポートされています(ヨーロッパ言語と一部の東アジア言語は、事前に構成されたフォームを使用している限り、問題なく動作します)。[ここでは、東アジアとU + 0000、U + 0001、U + 30FBの文字に細かい活字があります。]

実用的な考慮事項

  • ウィンドウのデフォルトはあまり役に立ちません。最良のエクスペリエンスを得るには、3つの構成を調整する必要があります。

  • コンソールアプリケーションへの「貼り付け」に関するもう1つの問題(非常に技術的):

    • HEX入力は、上の文字実現KeyUpのをAlt。キャラクターを配信する他のすべての方法はで行われKeyDownます。そのため、多くのアプリケーションはでキャラクターを見る準備ができていませんKeyUp。(Console-I/OAPI を使用するアプリケーションにのみ適用されます。)
    • 結論:多くのアプリケーションはHEX入力イベントに反応しません。
    • さらに、「貼り付けられた」文字で何が発生するかは、現在のキーボードレイアウトによって異なります。文字がプレフィックスキーを使用せずに入力できる場合(ただし、のように修飾子の任意の複雑な組み合わせを使用Ctrl-Alt-AltGr-Kana-Shift-Gray*)、エミュレートされたキープレスで配信されます。これは、どのアプリケーションでも期待されていることです。そのため、そのような文字のみを含むものを貼り付けることは問題ありません。
    • ただし、「その他」の文字はHEX入力をエミュレートすることによって配信されます

    結論:キーボードレイアウトがプレフィックスキーのない大量の文字の入力をサポートしていない限り、バグのあるアプリケーションの中には、PasteコンソールのUIを介して文字をスキップするものがありますAlt-Space E P。(これが、キーボードレイアウトの使用をお勧めする理由です!)

また、Windowsの「代替の、「より機能的な」コンソール」はコンソールではないことにも留意してください。Console-I/OAPIをサポートしていないため、これらのAPIに依存して動作するプログラムは機能しません。(ただし、「コンソールのファイルハンドルにFile-I / O API」のみを使用するプログラムは問題なく動作します。)

そのような非コンソールの1つの例は、MicroSoftの一部ですPowershell。私はそれを使わない; 実験するには、を押して離しWinKey、と入力しpowershellます。


(一方で、ConEmuまたはなどのプログラムがあり、「真のコンソールアプリケーション」が機能するようにAPIをANSICONインターセプトしようとしConsole-I/Oます。これは、おもちゃのサンプルプログラムでは確実に機能します。実際には、これは特定の問題を解決できない場合があります。実験してください。)

概要

  • フォント、キーボードレイアウトを設定します(オプションでHEX入力を許可します)。

  • Console-I/OAPI を通過するプログラムのみを使用し、Unicodeコマンドライン引数を受け入れます。たとえば、cygwinコンパイルされたプログラムはすべて問題ありません。すでに言ったように、CMD元気です。

UPD:最初は、のバグのために、cp65001カーネルレイヤーとCRTLレイヤーを混同していたUPD²:およびWindowsユーザーモードAPI!)。 また、 Win8ではこのバグの半分が修正されています。「より良いコンソール」アプリケーションに関するセクションを明確にし、Pythonがどのように実行するかについての参照を追加しました。


わかりました、これほど徹底したことなら、あなたは受け入れられた答えになるに値します!驚くばかり!
Vilx- 2017

5
私はC ++の初心者であり、注意深く読んでもこの答えを理解できません。誰かがこれについて私を助けたり、簡単な説明をしたりできますか?
Rick

@Bachi Bachiのおかげで、キーボードレイアウト(上記)のv73にサポートファイルが不足していることがわかりました。修正されました!(私の.logファイルから判断すると、それはzip -ru[?!]の断続的なバグです。デバッグする方法の手がかりがありません-または将来的に回避します...)
Ilya Zakharevich

@リック:そうです!Pythonの回避策へのリンクを追加しました(ただし、現在、パッチへの直接リンクは見つかりません...)。
イリヤザハレビッチ

@IlyaZakharevich:Dありがとう。しかし、私はどういうわけかWindowsでユニコードを使用することをあきらめました。後でLinuxを使用します。
Rick

387

試してください:

chcp 65001

これにより、コードページがUTF-8に変更されます。また、Lucidaコンソールフォントを使用する必要があります。


18
これをデフォルトにする方法があるかどうか知っていますか?
AnnanFay

82
Windowsのコードページ65001のサポートに重大な実装のバグがあり、C標準ライブラリのIOメソッドに依存する多くのアプリケーションを破壊することに注意してください。これは非常に脆弱です。(バッチファイルも65001で機能しなくなります。)残念ながら、UTF-8はWindowsの二級市民です。
11

7
@bobince Windowsコードページ65001サポートのバグの例はありますか?私は一度も遭遇したことがなく、グーグルでも何も起こらなかったので、興味があります。(もちろん、バッチファイルは機能しなくなりますが、UTF-8は2番目の市民ではありません...)
Roman Starkov

17
@romkyns:私の理解では、バイト数を返す呼び出し(fread / fwrite / etcなど)は実際には文字数を返します。これにより、不完全な入力の読み取り、fflushのハング、壊れたバッチファイルなど、さまざまな症状が発生します。いくつかの背景。CJK「マルチバイト」ロケールに使用されるデフォルトのコードページには、これを修正するための特別な処理が組み込まれていますが、65001にはありません- サポートされていません。
bobince

7
ここで興味深い質問ですが、これはバイトを報告し、代わりに文字を報告するためのバグですか、それを使用するアプリケーションがbytes = characterを誤って想定しているためですか?つまり、APIが失敗するのか、それともAPIの使用が失敗するのか?
基本

36

私は同じ問題を抱えていました(私はチェコ出身です)。英語版のWindowsをインストールしており、共有ドライブ上のファイルを操作する必要があります。ファイルへのパスには、チェコ固有の文字が含まれています。

私のために働く解決策は:

バッチファイルで、charsetページを変更します。

私のバッチファイル:

chcp 1250
copy "O:\VEŘEJNÉ\ŽŽŽŽŽŽ\Ž.xls" c:\temp

バッチファイルはCP 1250に保存する必要があります。

コンソールには文字が正しく表示されませんが、文字は認識されます...


1
乾杯!これは、バッチファイル内に著作権文字を入力できるようにするために必要でした。
Lea Hayes、

これは、あなたとほとんど同じ状況で、私にとっても完全に機能しました。代わりに私のパスは、アイルランドのゲール語の文字が含まれている。すなわちáéíó、とú
Seany84 14

私の「ネットワーク上のパス内のトルコ語の文字とスペースの問題」を解決する@vanna。あなたは素晴らしいです。
caglaror 2014


2
おそらく、文字を正しく表示するために別のフォントを使用する必要があっただけです。LucidaConsoleが私のために機能しました。
VlastimilOvčáčík2016年

29

非Unicodeプログラムの言語を確認してください。Windowsコンソールでロシア語に問題がある場合は、ここでロシア語を設定する必要があります。

非Unicodeプログラムの言語の変更


6
これはでのUnicodeのサポートを有効にしません。cmdデフォルトのコードページをcp8668ビット文字セットのままに切り替えるだけです。cp866代わりに使用してcp1251、トラブルの独自のたわごとを追加します。
ivan_pozdeev 2017年

1
新しいWindows 10バージョンの新しいオプションについては、以下の回答も参照してください
zvi

14

Windowsコンソールのデフォルトのコードページを変更するのは非常に困難です。Webを検索すると、さまざまな提案が見つかりますが、一部の提案はWindowsを完全に壊してしまう可能性があります。つまり、PCが起動しなくなります。

最も安全なソリューションはこれです。レジストリキーに移動し、HKEY_CURRENT_USER\Software\Microsoft\Command ProcessorString value Autorun= を追加しますchcp 65001

または、この小さなバッチスクリプトを最も一般的なコードページに使用できます。

@ECHO off

SET ROOT_KEY="HKEY_CURRENT_USER"


FOR /f "skip=2 tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v OEMCP') do set OEMCP=%%i

ECHO System default values:

ECHO.
ECHO ...............................................
ECHO Select Codepage 
ECHO ...............................................
ECHO.
ECHO 1 - CP1252
ECHO 2 - UTF-8
ECHO 3 - CP850
ECHO 4 - ISO-8859-1
ECHO 5 - ISO-8859-15
ECHO 6 - US-ASCII
ECHO.
ECHO 9 - Reset to System Default (CP%OEMCP%)
ECHO 0 - EXIT
ECHO.


SET /P  CP="Select a Codepage: "

if %CP%==1 (
    echo Set default Codepage to CP1252
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 1252>nul" /f
) else if %CP%==2 (
    echo Set default Codepage to UTF-8
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 65001>nul" /f
) else if %CP%==3 (
    echo Set default Codepage to CP850
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 850>nul" /f
) else if %CP%==4 (
    echo Set default Codepage to ISO-8859-1
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28591>nul" /f
) else if %CP%==5 (
    echo Set default Codepage to ISO-8859-15
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28605>nul" /f
) else if %CP%==6 (
    echo Set default Codepage to ASCII
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 20127>nul" /f
) else if %CP%==9 (
    echo Reset Codepage to System Default
    reg delete "%ROOT_KEY%\Software\Microsoft\Command Processor" /v AutoRun /f
) else if %CP%==0 (
    echo Bye
) else (
    echo Invalid choice
    pause
)

@chcp 65001>nul代わりにを使用するとchcp 65001、新しいコマンドラインウィンドウを開始するたびに、「アクティブコードページ:65001」という出力が抑制されます。

コードページ識別子から取得できるすべての利用可能な番号の完全なリスト

設定は現在のユーザーにのみ適用されます。すべてのユーザーに設定する場合は、行SET ROOT_KEY="HKEY_CURRENT_USER"SET ROOT_KEY="HKEY_LOCAL_MACHINE"


いい考えと使える例も!

13

実際には、コツはコマンドプロンプトがこれらの英語以外の文字を実際に理解し、正しく表示できないことです。

英語以外の文字を含むパスをコマンドプロンプトに入力すると、「?? ?????? ??????」と表示されます。コマンド(私の場合はcd "??? ?????? ?????")を送信すると、すべてが正常に機能しています。


2
名前の競合が発生する可能性があるため、これはおそらく少し危険です。たとえば、「???」としてレンダリングされる2つのファイルがあり、「cd ???」と入力した場合 どちらを使用するかわかりません(さらに悪いことに、任意のものを選択します)。
John

26
???を入力せず、表示されている実際の名前を???として入力します。パスワード入力ボックスのようなものと考えてください。入力したものは***として表示されますが、送信されたものは元のテキストです。
ユーザー

これは、コマンドプロンプトで直接実行するコマンドに対して実際に機能しました。ただし、.cmdバッチファイルを実行する場合でも、バッチファイルchcp 65001の先頭に配置する必要があります。
wisbucky 2017年

あなたの場合、それはフォントの問題です...内容はありますが、それを表示するための適切なフォントがありません。しかし、OPは異なります。
WesternGun 2017年

11

Windows 10 x64マシンで、コマンドプロンプトに英語以外の文字を表示させました。

管理者特権のコマンドプロンプトを開きます(管理者としてCMD.EXEを実行します)。次の方法で、コンソールで使用可能なTrueTypeフォントをレジストリに問い合わせます。

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

次のような出力が表示されます。

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

次に、Courier Newのような必要な文字をサポートするTrueTypeフォントを追加する必要があります。これを行うには、文字列名にゼロを追加します。この場合、次の文字列は「000」になります。

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

次に、UTF-8サポートを実装します。

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

デフォルトのフォントを「Courier New」に設定します。

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

フォントサイズを20に設定します。

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

必要に応じて、クイック編集を有効にします。

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

3
一般的に、コードページ65001を使用すると、Windows 10でクリエーターアップデートを使用した場合にのみバグが発生します。Windows 7では、出力と入力の両方のバグがあります。Windows 8およびWindows 10の古いバージョンでは、入力バグがあり、入力を7ビットASCIIに制限します。
Eryk Sun 2017

6

Python 2.7の完全な回答はまだ見ていなかったので、2つの重要なステップと、非常に役立つオプションのステップの概要を説明します。

  1. Unicodeをサポートするフォントが必要です。Windowsには、コマンドプロンプトのタイトルバークリックしてDefaultsオプションをクリックすることで選択できるLucida Consoleが付属しています。これは色へのアクセスも提供します。Properties代わりにを選択して、特定の方法で呼び出されたコマンドウィンドウ(ここで開く、Visual Studioなど)の設定を変更することもできます。
  2. コードページをに設定する必要がありcp65001ます。これは、コマンドプロンプトにUTF-7およびUTF-8サポートを提供しようとするMicrosoftの試みのようです。これを行うにchcp 65001は、コマンドプロンプトで実行します。一度設定すると、ウィンドウが閉じるまでこの方法が維持されます。cmd.exeを起動するたびに、これをやり直す必要があります。

より永続的な解決策については、この回答をスーパーユーザーで参照しください。つまり、REG_SZregedit at HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processorを使用して(String)エントリを作成し、それに名前を付けAutoRunます。その値をに変更しますchcp 65001。コマンドからの出力メッセージを表示したくない場合は、@chcp 65001>nul代わりに使用してください。

一部のプログラムはこのエンコードとのやり取りに問題があります。MinGWは、無意味なエラーメッセージでコンパイル中に失敗する注目すべきプログラムです。それにもかかわらず、これは非常にうまく機能し、ほとんどのプログラムでバグを引き起こしません。


5

私はこの方法がWindows 10の新しいバージョンで役立つことがわかりました:

この機能をオンにします。「ベータ版:世界的な言語サポートにはUnicode UTF-8を使用してください」

コントロールパネル->地域設定->管理タブ->システムロケールの変更...

地域設定


powershellまたはcmdを使用してこれを実現するにはどうすればよいですか?
Corey

コンソールで中国語の文字を表示しようとしていますが、Windows 10 64ビットでは動作しません(トルコ語でインストールされ、後で英語に変更されました)。次に、中国語をインストールして、機能するかどうかを確認します。
akinuri

4

本当に簡単なオプションの1つは、MinGWなどのWindows bashシェルをインストールして使用することです。

ここに画像の説明を入力してください

Unixコマンドライン機能を使用する必要があるため、少し学習曲線がありますが、その機能が気に入って、コンソールの文字セットをUTF-8に設定できます。

ここに画像の説明を入力してください

もちろん、grep、find、lessなどの通常の* nixの特典もすべて利用できます。


この(古い)ケースでは、問題はコンソールではなくスクリプトにありました。bashスクリプトを使用してこれを解決できますか?
Vilx

はい、確かに彼らは木製のbashスクリプトにUTF-8のフラグを立てることができ、Windowsバッチファイルよりもはるかに強力に機能します-これは古いケースであることを知っていますが、MSは将来の参照のためにフラグを立てる価値があると思いましたUnicodeが大幅に向上します。
Steve Barnes、

grepfind、およびless
Peter Mortensen

UTF-8でエンコードされた文字の出力は問題ありません。ただし、入力はまだシステムコードページによってエンコードされています。
Rick

1
Gitを使用している場合、Windowsユーザーは既にbashシェルを持っている可能性があることを追加するだけです。Git> Git Bashウィンドウを開くだけです。
skomisa

3

同様の問題について(私の問題は、MySQLのUTF-8文字をコマンドプロンプトに表示することでした)、

私はそれを次のように解決しました:

  1. コマンドプロンプトのフォントをLucida Consoleに変更しました。(この手順は、状況に無関係である必要があります。画面に表示される内容のみに関係し、実際にキャラクターとは関係ありません)。

  2. コードページをWindows-1253に変更しました。コマンドプロンプトで「chcp 1253」を使用してこれを行います。UTF-8を見たいと思った私の場合にはうまくいきました。


7
Windws-1253はUnicodeコードページではありません。これは、標準の256文字のコードページです。どうやらあなたはそのコードページで表示できる文字だけを使っていましたが、それは普遍的ではありません。
Vilx-

3

この問題は非常に迷惑です。通常、ファイル名とファイルのコンテンツに漢字が含まれています。私がWindows 10を使用していることに注意してください。これが私の解決策です:

表示するには、ファイル名をのような、dirまたはlsあなたは、Windows 10上でのUbuntuのbashをインストールした場合

  1. 非UTF 8文字をサポートするように領域を設定します。

  2. その後、コンソールのフォントはそのロケールのフォントに変更され、コンソールのエンコーディングも変更されます。

前の手順を実行した後、コマンドラインツールを使用してUTF-8ファイルのコンテンツを表示するには

  1. ページをutf-8に変更します chcp 65001
  2. Lucida Consoleなど、utf-8をサポートするフォントに変更します。
  3. typeコマンドを使用してファイルの内容をcat確認するか、Windows 10にUbuntu bashをインストールした場合
  4. コンソールのエンコーディングをutf-8に設定した後、中国語の入力方法を使用してcmdに中国語の文字を入力できないことに注意してください。

もっとも怠慢な解決策は:だけのようなコンソールエミュレータを使用http://cmder.net/


これは私にとっては意味がありませんでした。pointコマンドの出力の漢字はまだ文字化けしています。
Ssuching Yu 2018

@SiqingYuクレイジーな設定をやめます。blog.miniasp.com/post/2015/09/27/Useful-tool-Cmder.aspxを
code4j

以前Cmderを使用しましたが、Visual Studioで使用される開発者コンソールを置き換えることはできません。
Ssuching Yu

@SiqingYu C#インタラクティブPowerShellを意味しますか?
code4j 2018年

インタラクティブな電源シェルではなく、Visual C ++でも使用される開発者コンソール。これは、Win32コンソールアプリケーションプロジェクトのデフォルトのデバッグコンソールです。
Ssuching Yu

2

ここにいくつかの回答がありますが、質問に対応していないようです。ユーザーはコマンドラインからUnicode入力を取得したいと考えています。

Windowsは2バイト文字列のエンコーディングにUTF-16を使用するため、プログラムのOSからこれらを取得する必要があります。これを行うには2つの方法があります-

1)Microsoftには、mainがワイド文字配列を取ることができる拡張機能があります。intwmain(int argc、wchar_t * argv []); https://msdn.microsoft.com/en-us/library/6wd819wh.aspx

2)Windows APIを呼び出して、コマンドラインのUnicodeバージョンを取得します。wchar_t win_argv =(wchar_t)CommandLineToArgvW(GetCommandLineW()、&nargs); https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-commandlinetoargvw

これを読んでください: 詳細な情報については、http//utf8everywhere.org(特に他のオペレーティングシステムをサポートしている場合)。


ああ、いや、申し訳ありませんが、あなたは質問を逃しました。これは、Unicode文字を受け取るプログラムを書いているときのためのものです。私の質問は、Unicode文字を別のプログラムに送信することに関するものでした(うまくいけばそれらの受信をサポートしますが、実際には逆アセンブルを除いて知る方法がありません)。
Vilx-

2

2019年6月以降、Windows 10ではコードページを変更する必要はありません。

Introducing Windows Terminal」(Kayla Cinnamonから)およびMicrosoft / Terminalを参照してください。
Consolasフォントの使用により、部分的な Unicodeサポートが提供されます。

Microsoft/Terminal第387号に記載されているとおり:

現在Unicodeでは、87,887の表意文字があります。あなたもそれらすべてが必要ですか?
境界が必要です。その境界を超える文字は、フォントフォールバック/フォントリンク/何でも処理する必要があります。

Consolasがカバーするもの:

  • CLIで最新のOSSプログラムによって使用される記号として使用された文字。
  • これらのキャラクターは、Consolasのデザインとメトリックに従い、既存のConsolasキャラクターと適切に位置合わせする必要があります。

Consolasがカバーしてはならないもの:

  • ラテン語、ギリシャ語、キリル語を超えた文字、特に文字の句読点、特にアラビア語のような複雑な形状が必要です。
  • これらの文字はフォントフォールバックで処理する必要があります。

1

コンピュータがDOSウィンドウに入力したときに正しいパス/ファイル名を表示した場合、.batファイルのクイック決定:

  1. コピーtemp.txt [Enterキーを押します]
  2. パス/ファイル名を入力[Enterキーを押します]
  3. 押してCtrlキーを押しながらZ [Enterキーを押します]

この方法で、.txtファイル(temp.txt)を作成します。それをメモ帳で開き、テキストをコピーして(見た目が悪くならないように心配しないでください)、. batファイルに貼り付けます。この方法で作成された.batをDOSウィンドウで実行すると、mе(キリル文字、ブルガリア語)で機能しました。


1

よりクリーンな方法:利用可能な無料のMicrosoft日本語言語パックをインストールするだけです。(他の東洋言語パックも機能しますが、私は日本語のものをテストしました。)

これにより、より大きなグリフのセットを持つフォントが得られ、それらがデフォルトの動作になり、cmd、ワードパッドなどのさまざまなWindowsツールが変更されます。


1

コードページを1252に変更するとうまくいきます。私にとっての問題は、シンボルダブルダラー§がWindows Server 2008のDOSによって別のシンボルに変換されることです。

私はBCPステートメント^§でCHCP 1252とその前のキャップを使用しました。


うまくいきました!なぜ人々がこれに反対票を投じたのかはわかりませんが、これは一部の人々にとって有効な代替手段です。このコードページ1252は、CP 65001と同じコードが機能しなかったWindows Server 2012でも問題を解決します。バッチスクリプトが編集されたコードページ、またはOSのデフォルトに依存すると思います。このケースでは、EN-USのベースOSとドイツMUIマシン上でメモ帳を使用して作成された...
トニー・ウォール

0

バッチファイルで短い(8ドット3)名でそれらを参照することにより、Unicode名前のファイルを削除する同様の問題を回避しました。

ショートネームはを実行して表示できますdir /x。明らかに、これは既知のUnicodeファイル名でのみ機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.