ÅÄÖを機能させるためのエンコード


12

コントロールパネルを使用する代わりに、パスワードを使用してユーザー「Windows 7アカウント」を簡単に作成できるようにするVB.netで小さなアプリケーションを作成しています。私が抱えている問題は、UTF-8エンコードを使用してVB.netでbatファイルを作成するとき、それがそうであるようにåäöを書かないことです。私は見つけることができるすべてのエンコーディングを試しましたが、それを機能させることはできません。

なぜ私がこれを取得しているのかについて誰かがアイデアを持っているなら、私に知らせてください。事前に感謝します!


stackoverflow.comに投稿して、スクリプトを表示してみてください。
トビーアレン

1
@Toby Allenまあ、それは実際にはプログラミングの質問ではなく、テキストのエンコードに関する質問です。「bat」ファイルを「通常の」方法で作成すると、同じ問題が発生します。
kagstrom2100

回答:


12

編集:私は間違っていた;)
cmd.exeUTF-8を受け入れるんが、あなたはそれを保存することを確認する必要がなくてBOM、ファイルの先頭に。

これが2番目のテストです。chcp 65001バッチファイルの先頭で使用できます。

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


バッチファイル UTF-8タイプにすることはできません。ASCIIである必要があります。Cmd.exe別の形式を受け入れないだけです。私は簡単なテストを行い、キャラクターを使用できますが、いくつかの作業が必要です。

でファイルを作成test.batecho Å Ä Öます。formatで保存しますANSI/ASCII。を開き、使用cmd.exe方法を確認します(Unicode文字を表示するため)。cmd.exeLucida Console

ファイルを入力すると、古いDOS文字として文字が表示されます。ここで翻訳チャートを見ることができます

「Windows Ansi」に切り替えると、文字を含むコードページ(つまり、西ヨーロッパラテン語)chcp 1252が正しく表示されます。それらがそれぞれのユーティリティに転送されるかどうかは、そのユーティリティに依存します。

しかし、なぜこれのためにバッチファイルを作成するのですか?VB.netでコーディングすることはできませんか?

cmd.exe


編集2#:

これはあなたが設定Lucida Consoleする方法ですcmd.exe

ルシダコンソール


BOMUTF-8ファイルの先頭の3つの文字です。(\xEF\xBB\xBF)。
VB.netでは、次のようなファイル作成しますBOM

Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
                                                  '^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
    sink.WriteLine("...")
End Using

答えてくれてありがとう。私のvb.netアプリケーションでは、次のコマンドで.batファイルを作成しようとしています。net user "username" net localgroupadministratörer "type" / addグループとして英語の翻訳を取りません。
kagstrom2100

VB.netから直接これを実行できる場合、.batファイルを経由するのは少し大変だと思っただけです。ここのようGoogleにも多くの例があります。したがって、仲介者として.batを作成する必要はありません。これらの例では、Unicode名をWindows関数に直接入力できます。(何らかの理由でVB.netアプリとは別の時間に.batを実行する必要がない限り?)
Rik

私は何日もGoogleでVB.netでこれを行う方法を探していましたが、それを行う方法は見つかりませんでした。私はすでにあなたがリンクした例を試しましたが、うまくいかないようでした。.batファイルでBOMが使用されていないことを確認するにはどうすればよいですか?Lucida Consoleとは何ですか?私がそれについて見つけることができる唯一の情報は、それがフォントだということです。2番目の例/画像で行った正確なことを試みると、i.imgur.com
kagstrom2100

答えに追加してLucida Console、ファイル作成を含めずに作成しますBOM(下部の編集#2)。しかしnet user、コマンドプロンプトでの作業を介してこのユーザーを作成していますか?そして、VB.net経由で作成すると何が機能しないのですか?これには、サンプルコード(または別の質問)が必要です。(ところで、あなたのコメントではなく、あなたのイメージではなく、私のイメージをリンクしました)
リック

2
@JohnLBevanうん、そうだね。どうやらfindUTF-8入力はあまりうまく処理されていないようです。ただし、を使用できますfindstr。このように:ping 127.0.0.1 -n 2 | findstr /C:" = "
リック

2

これを修正したのは、BOMなしでこのコードを使用してファイルをUTF-8として保存することでした

@echo off
chcp 65001
net user Linus /add
net localgroup Administratörer Test/add

私が以前に使用しなかったのは@echo offであったため、chcp 65001を使用することで修正されました。すべての助けてくれてありがとうRik :)

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