不可能有ASCII编码的中文的。
你获取byte[]的时候不应该用ascii编码。要用Encoding.GetEncoding("GB18030")
你写文本的时候为什么要用ascii编码呢,需要在网络上传输,避免乱码?
如果只是能用写字板打开的话 ,可以直接写中文的string,不过在写的时候文件流要用
Encoding.GetEncoding("GB18030")来作为编码格式。
你获取byte[]的时候不应该用ascii编码。要用Encoding.GetEncoding("GB18030")
你写文本的时候为什么要用ascii编码呢,需要在网络上传输,避免乱码?
如果只是能用写字板打开的话 ,可以直接写中文的string,不过在写的时候文件流要用
Encoding.GetEncoding("GB18030")来作为编码格式。
解决方案 »
- gridview
- 用了线程,怎样让它不卡。简单的线程问题求助!!
- webservice中利用dataset更新oracle数据
- 窗体背景加图片的问题!!高手指点一下啊
- ASP.NET四酷全书 求答
- 有很多地方对不起大家,谅解,谅解,知道的别说了 , 谢谢,下次不敢了!!!!!
- C#出个自认为非常繁琐问题,大家看如何解答!(公式分母为0判断,并得出SQL语句的字符串)
- winform程序求解啊
- 请问网站发布到网上后,ueditor编辑器不显示,但是在我本机自己的电脑能正常显示
- 文件拷贝问题
- TextBox绑定問題!!!!
- 求助,一个通过ASCII码计算出字符,以及通过字符计算ASCII码值的最简易方法!
改成这样吗?
Byte[] encodedBytes = Encoding.GetEncoding("GB18030").GetBytes(str.ToString());
char[] decoded = Encoding.GetEncoding("GB18030").GetChars(encodedBytes);
str = str.Remove(0,str.Length);
str = str.Append(decoded);
string txt = str.ToString();我要把文件发给另一家公司的软件去读取,该软件只能读取纯文本.
txt = dr["列名"].ToString().Trim().PadRight(12);//本来我要的是"深圳 ",但实际上得到的是"深圳 ",因为.NET把每个汉字算作1个字符,所以在后面加了10个空格.当我
tw = new StreamWriter(fileName,false,System.Text.Encoding.GetEncoding("GB2312"));
tw.Write(txt); //写入文本文件后,该段内容就比规定的长了两个字符,对方的软件就不能正确读取了.
我的解决方法是,把数据库里的12位varchar改成12为char,然后
txt = dr["列名"].ToString(),不做去掉空格再补足12位,虽然我的问题解决,但不是根本之道,困惑依旧,请高人解惑!
string类型本身在.net里面是不存在编码转换的。
要转换也是在byte[],char[],和string之间转换。
所以转换成byte再转换回string是没意义的。
实在是要指定长度的话,可以:
string txt=dr["列名"].ToString().Trim();
Byte[] encodedBytes = Encoding.GetEncoding("GB18030").GetBytes(txt);
Byte[] writeBytes = new Byte[12];
encodedBytes.CopyTo(writeBytes,0);
for(int i=encodedBytes.Length;i<12;i++)
{
writeBytes[i]=(byte)' ';
}
FileStream tw= new FileStream("output.txt",FileMode.OpenOrCreate);
tw.Write(writeBytes,0,12);
tw.Close();
这样就可以控制实际的字符长度了。
醍醐灌顶,怎样给分?
我在管理里面已经给你送了10分,但是怎么看不到呢?
我在管理里面已经给你送了10分,但是怎么看不到呢?