VB.netで小さなアプリケーションを書いています。これを使用すると、コントロールパネルを経由する代わりに、パスワードを使用してユーザー「Windows 7アカウント」を簡単に作成できます。私が抱えている問題は、UTF-8エンコーディングを使用してVB.netでbatファイルを作成するときに、想定どおりにåäöが書き込まれないことです。私は見つけることができるすべてのエンコーディングを試しましたが、機能させることができません。
なぜ私がこれを取得しているのかについて誰かが考えを持っている場合は、私に知らせてください。よろしくお願いします!
編集:私は間違っていました;)cmd.exe
はUTF-8を受け入れますが、必ず保存する必要がありますなしファイルの先頭にあるBOM
。
これは2番目のテストです。バッチファイルの先頭にchcp 65001
を使用できます。
バッチファイルできません UTF-8タイプである必要があります。 ASCIIである必要があります。 Cmd.exe
は、別の形式を受け入れません。私は簡単なテストを行い、あなたはあなたのキャラクターを使うことができますが、それはいくつかの作業を必要とします。
test.bat
を使用してecho Å Ä Ö
でファイルを作成します。形式ANSI/ASCII
で保存します。 cmd.exe
を開き、cmd.exe
がLucida Console
を使用していることを確認します(Unicode文字を表示するため)。
ファイルを入力すると、古いDOS文字として文字が表示されます。あなたは翻訳チャートを見ることができます ここ 。
chcp 1252
を使用して「Windows Ansi」- コードページ (つまり西ヨーロッパのラテン語)に切り替えると、文字が正しく表示されます。それらがそれぞれのユーティリティに転送されるかどうかは、そのユーティリティに依存します。
しかし、なぜこのためのバッチファイルを作成しているのですか? VB.netでコーディングすることはできませんか?
これは、Lucida Console
でcmd.exe
を設定する方法です。
BOM
は、UTF-8ファイルの先頭の3文字です。 (\xEF\xBB\xBF
)。
VB.netでは、次のようにファイルを作成しますwithout a BOM
:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using
私のためにこれを修正したのは、BOMなしでファイルをUTF-8として保存し、このコードを使用することでした
@echo off
chcp 65001
Net User Linus /add
net localgroup Administratörer Test/add
以前に使用しなかったのは@ echo offだったので、chcp 65001を使用することで解決しました。すべての助けをありがとうRik :)