char [] charData;
string str;
int x;
int count = 0;
FileStream aFile = new FileStream("../../../../设计/数据库/zx.txt", FileMode.Open);
str = "这个是点";
byData = new byte[21];
charData = new char[21];
aFile.Seek(0, SeekOrigin.Begin);
aFile.Read(byData, 0, 21);
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, 0, 21, charData, 0, true);
//x = Convert.ToInt32(new string(charData));
//Console.WriteLine(byData[17]);
//d.GetChars(byData, 0, 2, charData, 0, true);
//x = Convert.ToInt32(new string(charData));
Console.WriteLine(charData);
Console.ReadKey();
我在文本中写入的数据为154这个是点way0515454515 为什么这个输入流在控制台上输出为154??????way0515454515 4个汉字按2个字符来算是8个字符,这里怎么少了两个字符呢?
我在写输出流的时候数据为 154this is new way0515454515 后来有输出"这个是点"从第三位替换,就成了"154这个是点way0515454515",
这说明替换掉了的是"this is new " 这12个字符,那么一个汉字有三个字符,请问这个怎么回事呢??
5 个解决方案
#1
System.Encoding.Default.GetString
試試這個 輸入是byte[] 輸出是string
試試這個 輸入是byte[] 輸出是string
#2
你是说在USING 上添加System.Encoding.Default.GetString 引用?
#3
1楼,我用了你的方法可以输出原来的汉字了,但是好像字体大了一点啊
#4
你所做的实际上是把汉字的utf-8编码编译成了另一种编码,在输出的时候只输出了编码的十进制显示,要再象一楼一样再进行一次ANSI编码才能把汉字显示出来,你把它编译成UTF-8的编码或是GB2312的编码应该也可以输出的。
#5
utf-8编码
#1
System.Encoding.Default.GetString
試試這個 輸入是byte[] 輸出是string
試試這個 輸入是byte[] 輸出是string
#2
你是说在USING 上添加System.Encoding.Default.GetString 引用?
#3
1楼,我用了你的方法可以输出原来的汉字了,但是好像字体大了一点啊
#4
你所做的实际上是把汉字的utf-8编码编译成了另一种编码,在输出的时候只输出了编码的十进制显示,要再象一楼一样再进行一次ANSI编码才能把汉字显示出来,你把它编译成UTF-8的编码或是GB2312的编码应该也可以输出的。
#5
utf-8编码