以下代码块在C#交互式编译器上运行良好
Microsoft (R) Visual C# Interactive Compiler version 4.2.0-4.22252.24 ()
Loading context from 'CSharpInteractive.rsp'.
Type "#help" for more information.
> using System.Text;
> var codepages = Encoding.GetEncodings().Select(x => x.GetEncoding()).ToList();
> foreach (var cp in codepages) { Console.WriteLine($"{cp.HeaderName} {cp.EncodingName} ({cp.CodePage})"); }输出
1. IBM037 IBM EBCDIC (US-Canada) (37)
2. IBM437 OEM United States (437)
3. IBM500 IBM EBCDIC (International) (500)
..
..
..
138. x-iscii-pa ISCII Punjabi (57011)
139. utf-7 Unicode (UTF-7) (65000)
140. utf-8 Unicode (UTF-8) (65001)但是,每当我想在.net 6.0 winform应用程序中运行它时,
public MainForm()
{
InitializeComponent();
initView();
cbEncodings.Items.Clear();
var codepages = Encoding.GetEncodings().Select(x => x.GetEncoding()).ToList();
foreach (var e in codepages)
{
cbEncodings.Items.Add($"{e.EncodingName} ({e.CodePage})");
}
}它只列出了7个元素


这是什么原因?
发布于 2022-06-07 14:08:29
在代码之前添加Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); (即在var codepages = Encoding.GetEncodings().Select(x => x.GetEncoding()).ToList();之前),然后得到完整的列表。详情见https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding.getencodings?view=net-6.0。
https://stackoverflow.com/questions/72532291
复制相似问题