目錄
問題描述
問題解決
方法1
方法2
問題描述
通過C# 的 File 相關的對象進行檔案流編寫并輸出為.bat 檔案時,需要設定編碼格式為“GB2312”否則會出現執行 .bat 檔案時控制台出現亂碼無法識别響應指令。
問題解決
.net framework 直接使用如下代碼即可。
Encoding.GetEncoding("gb2312")
.net core 需要單獨引用 Nuget 包“System.Text.Encoding.CodePages”
方法1
并通過如下代碼即可完成GB2312編碼對向的建立。
System.Text.CodePagesEncodingProvider.Instance.GetEncoding("gb2312")
方法2
在Starup.cs的Configure方法或是Main(string[] args)方法中增加如下代碼,即可完成注冊。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
注冊成功後,即可使用如下代碼:
Encoding.GetEncoding("gb2312")
例子:
//建立BAT
string fileName = $"{Environment.CurrentDirectory}\\install.bat";
StringBuilder argsString = new StringBuilder();
argsString.AppendLine($"sc create EMSDataCollector binpath= {Environment.CurrentDirectory}\\{Assembly.GetExecutingAssembly().GetName().Name}.exe start= auto obj= LocalSystem");
argsString.AppendLine("sc description EMSDataCollector 能源資料采集器服務(EMSDataCollector)版權歸屬測試公司,中文出現亂碼的地方。版本:2020.12.25。");
argsString.AppendLine("sc start EMSDataCollector");
argsString.AppendLine("pause");
//File.WriteAllText(fileName,argsString.ToString(), Encoding.GetEncoding("gb2312"));
File.WriteAllText(fileName,argsString.ToString(), System.Text.CodePagesEncodingProvider.Instance.GetEncoding("gb2312"));
Process.Start(fileName);