我现在遇到这样的情况,
有一个文本文件要作为简繁体词汇互换的数据字典,ansi编码的(业务需要不能且不允许转为UTF8的),内容既有GBK的汉字,又有BIG5的汉字.
例如:
塑料 塑膠
达芬奇 達聞西
(注意:
塑料,达芬奇是GBK编码,塑膠,達聞西是big5编码)C#用streamreader只能以一种编码方式来读,要么是GBK,要么是BIG5,用ansi干脆读不到任何中文,这样readline()出来的结果,都无法同时取到塑料/塑膠的正确byte[],也无法转成string进行操作但是,这个文件原来是c写的程序生成的,后来又用delphi作过扩展,都是非常正常地使用的.但是现在转为C#,却无从下手了.无法读取,也无法输出.输出的时候,不知道 塑料的getBytes()怎么跟 塑膠的getBytes()合并在一起,同时也无法用ansi直接保存到文件那么我想,如果用C#做类似Ultra Edit的16进制编辑器,要怎么读取编辑文件呢?请教各位高手!!!
你留个email,我传个这样子的ansi文件给你用notepad直接能修改的
大陆的字符集当然包括繁体的~
你不会不要说无法!
.NET当然可以处理二进制文件,直接用FileStream读到byte数组即可
{
string fileName=@"d:\test.txt";
StreamReader gbReader=new StreamReader(fileName, Encoding.GetEncoding("gb2312"), false, 1);
StreamReader bgReader=new StreamReader(fileName, Encoding.GetEncoding("big5"), false, 1); int i=0;
int pos=0; while(i>=0)
{
gbReader.BaseStream.Position =pos;
gbReader.DiscardBufferedData();
while(i!=32)
{
i=gbReader.Read();
if(i<0)
break;
else if(i>255)
pos+=2;
else
pos++;
Console.Write((char)i);
} bgReader.BaseStream.Position =pos;
bgReader.DiscardBufferedData();
while(i!='\n')
{
i=bgReader.Read();
if(i<0)
break;
else if(i>255)
pos+=2;
else
pos++;
Console.Write((char)i);
}
}
bgReader.Close();
gbReader.Close();
Console.ReadLine();
}