dotnetcore(C#)下读取ANSI(GB2312)编码的文本

更新时间:2023-06-29 21:35:16 阅读: 评论:0

dotnetcore(C#)下读取ANSI(GB2312)编码的⽂本
我要⼲啥
⼀个txt⽂本⽂件,⾥⾯存了上千个⽂件的完整路径。获取到这些⽂件的⽂件名,就想着尝试下在dotnet core下编⼀个⼩程序来⾃动完成。
程序的思路还是很简单的:⾸先将txt⽂件中的⽂件名按⾏读取到string[]类型变量中;⽽后⽤LastIndexOf函数查找最后⼀个"\\"字符,⽤SubString截取⽂件名;最后把得到的⽂件名列表保存到⽂件中。
using System;
using System.Collections.Generic;
using System.IO;
namespace GetFileNames
{
class Program
{
private static string infile;
private static string outfile;
static void Main(string[] args)
{
if (args.Length >= 2)蚂蝗的药用价值
{
infile = args[0];
outfile = args[1];
string[] inlines = File.ReadAllLines(infile);
List<string> outlines = new List<string>();
foreach (string line in inlines)
{
int substart = line.LastIndexOf("/") + 1;
int sublength = line.Length - substart;
if (substart <= 0 || sublength <= 0)
outlines.Add("");
el
outlines.Add(line.Substring(substart, sublength));
}
File.WriteAllLines(outfile, outlines);
Console.WriteLine("Mission complete!");
牛扒的做法
}
}
}
}
代码很简单,跑起来吧。可是,在读取⽂件的时候却遇到了问题:⽂件中的中⽂读进来后全部变成了乱码!
问题出哪⼉啦
肯定是编码的问题。于是⽤记事本打开了txt⽂件,看到右下⾓显⽰的⽂件编码为ANSI。
于是尝试改变读⼊⽂件的编码⽅式。也就是在File.ReadAllLines()函数中增加⼀个⽂件编码的参数。当然还要添加对引⽤
财务总监工作内容using System.Text;
string[] inlines = File.ReadAllLines(infile, Encoding.Default);
可是具体要增加那种编码呢?试了⼏个都不好使。后来使⽤Encoding.GetEncodings()⽅法获取了全部⽀持的编码格式,发现⼀共才8种:UTF8、UTF7、UTF32、Unicode、BigEndianUnicode、ASCII、Default。⽽我要读取的ANSI格式不再这个范围之内。
因为对字符编码也不太了解,于是上⽹搜了⼀下,发现cnblog上有⼀篇写的很好的⽂章:。
2、ANSI
ANSI全称(American National Standard Institite)美国国家标准学会(美国的⼀个⾮营利组织),⾸先ANSI不是指的⼀种特定的编码,⽽是不同地区扩展编码⽅式的统称,各个国家和地区所独⽴制定的兼容ASCII
但互相不兼容的字符编码,微软统称为ANSI编码
(GBK是在国家标准GB2312基础上进⾏了扩容,包含的字符更多)
补充:在windows下输⼊命令⾏的⿊框下,右键再点击属性可以看到当前的编码⽅式和代码页
代码页也称为“内码表”,是与特定语⾔的字符集相对应的⼀张表。操作系统中不同的语⾔和区域设置可能使⽤不同的代码页(代码页⼀般与其所直接对应的字符集之间并⾮完全等同,往往因为种种原因
(⽐如标准跟不上现实实践的需要)⽽会对字符集有所扩展)
根据这篇⽂章的描述,我们可以知道,输⼊的txt⽂件的编码格式应该是GB2312,于是将读取⽂件的代码改为
string[] inlines = File.ReadAllLines(infile, Encoding.GetEncoding("GB2312"));
于是,我的到了⼀个⼤⼤的错误提⽰!GB2312是不⽀持的编码名称。
于是查阅了的官⽅⽂档。发现了很多编码,Net Framework和.Net Core都没有⽀持。
代码页名称显⽰名称 Framework ⽀持 Core ⽀持
37IBM037IBM EBCDIC (美国-加拿⼤)
437IBM437OEM 美国
500IBM500IBM EBCDIC (国际)
708ASMO-708阿拉伯语(ASMO 708)
708ASMO-708阿拉伯语(ASMO 708)
代码页名称显⽰名称 Framework ⽀持 Core ⽀持720DOS-720阿拉伯语(DOS)
737ibm737希腊语(DOS)
775ibm775波罗的语(DOS)
850ibm850西欧(DOS)
852ibm852中欧语(DOS)
855IBM855OEM 西⾥尔语
857ibm857⼟⽿其语(DOS)
858IBM00858OEM 多语⾔拉丁语 I
860IBM860葡萄⽛语(DOS)
861ibm861冰岛语(DOS)
862DOS-862希伯来语(DOS)
863IBM863加拿⼤法语(DOS)
864IBM864阿拉伯语(864)
865IBM865北欧语(DOS)
866cp866西⾥尔语(DOS)
869ibm869现代希腊语(DOS)
870IBM870IBM EBCDIC (多语⾔拉丁语-2)
874windows-874泰语(Windows)
875cp875IBM EBCDIC (现代希腊语)
932shift_jis⽇语 (Shift-JIS)
936gb2312简体中⽂(GB2312)✓
949ks_c_5601-1987朝鲜语
950big5繁体中⽂(Big5)
1026IBM1026IBM EBCDIC (⼟⽿其拉丁语-5)
1047IBM01047IBM 拉丁语-1
1140IBM01140IBM EBCDIC (美国-加拿⼤-欧洲)
1141IBM01141IBM EBCDIC (德国-欧洲)小花猫喵喵喵
1142IBM01142IBM EBCDIC (丹麦-挪威-欧洲)
1143IBM01143IBM EBCDIC (芬兰-瑞典-欧洲)
1144IBM01144IBM EBCDIC (意⼤利-欧洲)
1145IBM01145IBM EBCDIC (西班⽛-欧洲)
1146IBM01146IBM EBCDIC (英国-欧洲)
厂既1147IBM01147IBM EBCDIC (法国-欧洲)
1148IBM01148IBM EBCDIC (国际-欧洲)
1149IBM01149IBM EBCDIC (冰岛语-欧洲)
1200utf-16Unicode✓✓
1201unicodeFFFE Unicode (⼤字节序)✓✓
代码页名称显⽰名称 Framework ⽀持 Core ⽀持1250windows-1250中欧语(Windows)
1251windows-1251西⾥尔语(Windows)
1252GB2312西欧语(Windows)✓
1253windows-1253希腊语(Windows)
1254windows-1254⼟⽿其语(Windows)
1255windows-1255希伯来语(Windows)
1256windows-1256阿拉伯语(Windows)
1257windows-1257波罗的语(Windows)
1258windows-1258越南语(Windows)
1361Johab韩语(Johab)
10000macintosh西欧(Mac)
10001x-mac-⽇语⽇语(Mac)
10002x-mac-chinetrad繁体中⽂(Mac)
10003x-mac-韩语朝鲜语(Mac)✓
10004x-mac-arabic阿拉伯语(Mac)
10005x-mac-hebrew希伯来语(Mac)
10006x-mac-希腊语希腊语(Mac)
10007x-mac-cyrillic西⾥尔语(Mac)
10008x-mac-chinesimp简体中⽂(Mac)✓
10010x-mac罗马尼亚语(Mac)
10017x-mac-乌克兰语乌克兰语(Mac)
10021x-mac-泰语泰语(Mac)
10029x-mac-ce中欧语(Mac)
10079x-mac-冰岛语冰岛语(Mac)
10081x-mac-turkish⼟⽿其语(Mac)
10082x-mac-克罗地亚语克罗地亚语(Mac)
12000utf-32Unicode (UTF-32)✓✓
12001utf-32BE Unicode (UTF-16 32 ⼤字节序)✓✓
20000x-中⽂-CNS繁体中⽂(CNS)
20001x-cp20001TCA 台湾
20002x-中⽂-Eten繁体中⽂(Eten)
20003x-cp20003IBM5550 台湾
20004x-cp20004TeleText 台湾
20005x-cp20005Wang 台湾
20105x-IA5西欧(IA5)
20106x-IA5-德语德语(IA5)
代码页名称显⽰名称 Framework ⽀持 Core ⽀持20107x IA5-瑞典语瑞典语(IA5)
20108x-IA5-Norwegian挪威语(IA5)
20127us-ascii US-ASCII✓✓
20261x-cp20261T.61
20269x-cp20269ISO-6937
20273IBM273IBM EBCDIC (德国)
20277IBM277IBM EBCDIC (丹麦-挪威)
20278IBM278IBM EBCDIC (芬兰-瑞典)
20280IBM280IBM EBCDIC (意⼤利)
20284IBM284IBM EBCDIC (西班⽛)
20285IBM285IBM EBCDIC (英国)
20290IBM290IBM EBCDIC (⽇语⽚假名)
烧饼
20297IBM297IBM EBCDIC (法国)
died
20420IBM420IBM EBCDIC (阿拉伯语)
20423IBM423IBM EBCDIC (希腊语)
20424IBM424IBM EBCDIC (希伯来语)
20833x-EBCDIC-KoreanExtended IBM EBCDIC (朝鲜语扩展)
20838IBM-泰语IBM EBCDIC (泰语)
20866koi8-r西⾥尔语(KOI8-RU-R)
20871IBM871IBM EBCDIC (冰岛语)
20880IBM880IBM EBCDIC (西⾥尔语俄语)
20905IBM905IBM EBCDIC (⼟⽿其语)
20924IBM00924IBM 拉丁语-1
20932EUC-JP⽇语(JIS 0208-1990 和0212-1990)
20936x-cp20936简体中⽂(GB2312-80)✓
20949x-cp20949韩语 Wansung✓
21025cp1025IBM EBCDIC (西⾥尔语塞尔维亚语-保加利亚语)
21866koi8-ru-u西⾥尔语(KOI8-RU)
28591iso-8859-1西欧语(ISO)✓✓
28592iso-8859-2中欧语(ISO)
28593iso-8859-3拉丁语3(ISO)
28594iso-8859-4波罗的语(ISO)
28595iso-8859-5西⾥尔语(ISO)
28596iso-8859-6阿拉伯语(ISO)
28597iso-8859-7希腊语(ISO)
28598iso-8859-8希伯来语(ISO-Visual)✓
28599iso-8859-9⼟⽿其语(ISO)唇寒齿亡

本文发布于:2023-06-29 21:35:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1069042.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:编码   欧洲   名称   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图