fix: 统一输出文件编码为ANSI,修复.NET 6下Encoding.Default回退为UTF-8的问题

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-23 15:35:11 +08:00
parent 79021aa86b
commit 473b2ca9cf
3 changed files with 6 additions and 50 deletions

View File

@@ -78,15 +78,8 @@ namespace DrillTools
}
private static Encoding CreateAnsiEncoding()
{
try
{
return Encoding.GetEncoding(Gb2312CodePage);
}
catch
{
return Encoding.Default;
}
}
}
}

View File

@@ -146,16 +146,9 @@ namespace DrillTools
}
private static Encoding CreateAnsiEncoding()
{
try
{
return Encoding.GetEncoding(Gb2312CodePage);
}
catch
{
return Encoding.Default;
}
}
private readonly record struct DrillTapeLine(string Text, string LineEnding);
}

View File

@@ -550,18 +550,8 @@ namespace DrillTools
}
// 3. 将重新排序后的钻带内容写入原始文件使用ANSI编码
Encoding ansiEncoding;
try
{
ansiEncoding = Encoding.GetEncoding(936); // 936是GB2312的代码页
}
catch
{
ansiEncoding = Encoding.Default; // 如果获取失败,使用系统默认编码
}
// 使用StreamWriter写入文件确保编码正确应用
using (var writer = new StreamWriter(OriginalFilePath, false, ansiEncoding))
using (var writer = new StreamWriter(OriginalFilePath, false, CreateGb2312Encoding()))
{
writer.Write(reorderedDrillTape);
writer.Flush(); // 确保所有数据都被写入
@@ -1394,17 +1384,7 @@ M30";
}
// 使用ANSI编码写入文件
Encoding ansiEncoding;
try
{
ansiEncoding = Encoding.GetEncoding(936); // 936是GB2312的代码页
}
catch
{
ansiEncoding = Encoding.Default; // 如果获取失败,使用系统默认编码
}
File.WriteAllText(outputFilePath, diameterList.ToString(), ansiEncoding);
File.WriteAllText(outputFilePath, diameterList.ToString(), CreateGb2312Encoding());
// 记录日志
System.Diagnostics.Debug.WriteLine($"刀具直径列表文件已生成: {outputFilePath}");
@@ -1461,17 +1441,7 @@ M30";
}
// 使用ANSI编码写入文件
Encoding ansiEncoding;
try
{
ansiEncoding = Encoding.GetEncoding(936); // 936是GB2312的代码页
}
catch
{
ansiEncoding = Encoding.Default; // 如果获取失败,使用系统默认编码
}
File.WriteAllText(outputFilePath, diameterList.ToString(), ansiEncoding);
File.WriteAllText(outputFilePath, diameterList.ToString(), CreateGb2312Encoding());
// 记录日志
System.Diagnostics.Debug.WriteLine($"通用排序种子文件已生成: {outputFilePath}");
@@ -1750,7 +1720,7 @@ M30";
// 2. 创建模拟的参考钻带内容
string mockReferenceContent = CreateMockReferenceDrillTape(Tools.ToList());
string tempReferenceFile = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllText(tempReferenceFile, mockReferenceContent);
System.IO.File.WriteAllText(tempReferenceFile, mockReferenceContent, CreateGb2312Encoding());
try
{