我需要指定正确的代码页来打包带有zip库的文件.我看,我需要指定控制台编码(在我的情况下为866).
C:\Users\User>mode
Status for device CON:
----------------------
Lines: 300
Columns: 130
Keyboard rate: 31
Keyboard delay: 1
Code page: 866 <- I need to get this value in C# code
Run Code Online (Sandbox Code Playgroud)
Console.OutputEncoding返回1251,这不是我需要的.
谢谢,
亚历克斯
更新1:显然,在cmd.exe中执行"mode"并解析输出应该有效但看起来太粗鲁了.我正在寻找.NET解决方案.
更新2:应用程序是Windows窗体应用程序,而不是控制台应用程序.
Han*_*ant 18
控制台模式应用程序的默认代码页由系统区域设置决定.控制面板+区域和语言,管理选项卡,更改系统区域设置.您的Windows代码页是西里尔语,您的控制台代码页也是如此,因此这段代码有可能正常工作:
int lcid = GetSystemDefaultLCID();
var ci = System.Globalization.CultureInfo.GetCultureInfo(lcid);
var page = ci.TextInfo.OEMCodePage;
// etc..
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
public static extern int GetSystemDefaultLCID();
Run Code Online (Sandbox Code Playgroud)
请避免编写这样的代码,8位文本编码是一个雷区.当然没有任何合理的理由来运行控制台模式的zip程序,有很多.NET zip库可用.
归档时间: |
|
查看次数: |
4210 次 |
最近记录: |