Browse Source

文件编码工具中,添加对GB2312的支持,修复转换编码中文乱码

pull/4/head
rui.huang 3 years ago
parent
commit
8f46204443
  1. 1
      XCoder/CrazyCoder.csproj
  2. 32
      XCoder/FileEncoding/FrmMain.cs

1
XCoder/CrazyCoder.csproj

@ -52,6 +52,7 @@
<Content Include="数据库命名规范.txt" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
<PackageReference Include="NewLife.Core">
<Version>9.0.2022.216-beta2</Version>

32
XCoder/FileEncoding/FrmMain.cs

@ -1,8 +1,5 @@
using System;
using System.ComponentModel;
using System.IO;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;
using NewLife;
using NewLife.IO;
@ -21,6 +18,7 @@ namespace XCoder.FileEncoding
private void FrmEncodeReplace_Load(Object sender, EventArgs e)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
txtSuffix.Text = "*.cs;*.aspx";
var encs = new String[] { "UTF-8", "UTF-8 NoBOM", "ASNI", "Unicode", "Default" };
//var encs = new Encoding[] { Encoding.UTF8, new UTF8Encoding(false), Encoding.ASCII, Encoding.UTF8 };
@ -57,14 +55,7 @@ namespace XCoder.FileEncoding
return;
var enc = Encoding.UTF8;
switch (ddlEncodes.Text)
{
case "UTF-8": enc = Encoding.UTF8; break;
case "UTF-8 NoBOM": enc = new UTF8Encoding(false); break;
case "ASNI": enc = Encoding.ASCII; break;
case "Unicode": enc = Encoding.Unicode; break;
}
var enc = GetEncoding(ddlEncodes.Text);
var count = 0;
foreach (DataGridViewRow item in gv_data.Rows)
@ -77,7 +68,9 @@ namespace XCoder.FileEncoding
{
//ReplaceEncoding(txtPath.Text + item.Cells["名称"].Value.ToString(), fileCharset, enc);
var file = txtPath.Text + item.Cells["名称"].Value;
var txt = File.ReadAllText(file);
var srcEnc = GetEncoding(fileCharset);
var txt = File.ReadAllText(file, srcEnc);
File.WriteAllText(file, txt, enc);
count++;
@ -92,6 +85,19 @@ namespace XCoder.FileEncoding
gv_data.Rows.Clear();
}
private Encoding GetEncoding(string name)
{
return name switch
{
"UTF-8" => Encoding.UTF8,
"UTF-8 NoBOM" => new UTF8Encoding(false),
"ASNI" => Encoding.ASCII,
"Unicode" => Encoding.Unicode,
"gb2312" => Encoding.GetEncoding("gb2312"),
_ => Encoding.UTF8
};
}
/// <summary>
/// 替换文件编码
/// </summary>

Loading…
Cancel
Save