现在的问题是:如何在C#中将其读回并能正确转化成原来意义的字符串显示(C#中的字符串是unicode)。
问题的关键是unicode对汉字的编码与VB6.0中的编码不同,并且unicode无论中英文字符均为两字节表示。
byte[] buf = (读入的定长字节流);
Encoding getString = new UnicodeEncoding();
string strTmp = getString.GetString(buf);
strTmp中不是原来意义上的字符串。
10 个解决方案
#1
System.Text.Encoding.ASCII.GetString();试试
#2
System.Text.Encoding这个命名空间里还有别的编码方式类,也试试
#3
感谢二位的回复,但这些办法均不奏效。希望大家继续给予关注。
#4
string temp = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetByte(yourString));
你可是使用上面这种方法,把几种编码方式都试一下,看看那种可以得到正确的字符串。
你可是使用上面这种方法,把几种编码方式都试一下,看看那种可以得到正确的字符串。
#5
意思就是先把字符串转化成Byte[],然后再把Byte[]转换成string。
#6
我明白楼主的意思,在同一个编译平台上(.NET),他应该会*转换的,相信MSDN应该会查吧:),麻烦是要用.net把string转换成byte,用vb6.0把byte转成string,两种语言的unicode不同,我觉得UTF8也是没有用的,本质上差不多的东西,只是UTF8压缩的位数不同,说了这么多,其它我也不会转,关注.;..
#7
心碎无痕理解的正确,应该说是了解了问题的症结所在。MSDN当然可以查,
但老眼昏花,实在查不出来。老了不中用了,向大家请教啊。希望继续给予关注。
但老眼昏花,实在查不出来。老了不中用了,向大家请教啊。希望继续给予关注。
#8
没人关注了,真失望!
#9
这个单独用c#实现比较困难,有一种比较简单的方法就是,你可以先使用vb将存在硬盘中的数据读入到内存,分析后转换成unicode格式,在由c#程序读取。这种方法比较笨,但是也比较直接。
#10
敝人也遇过同样问题,以下是敝人的解决方法:
1、循环处理字符串中的每个字符
a、通过Asc码可以判断是否中文字符,将中文字符的Asc码分解为两个Byte添加到Byte[]中(为了判断中文字符本人在每个中文字符前加入Asc码0)
2、存储Byte[]
3、读出Byte[]
4、循环处理Byte[],判断Asc码,为零时表示后面2Byte是一个中文字符
5、将整理后的字符串显示出来即可
1、循环处理字符串中的每个字符
a、通过Asc码可以判断是否中文字符,将中文字符的Asc码分解为两个Byte添加到Byte[]中(为了判断中文字符本人在每个中文字符前加入Asc码0)
2、存储Byte[]
3、读出Byte[]
4、循环处理Byte[],判断Asc码,为零时表示后面2Byte是一个中文字符
5、将整理后的字符串显示出来即可
#1
System.Text.Encoding.ASCII.GetString();试试
#2
System.Text.Encoding这个命名空间里还有别的编码方式类,也试试
#3
感谢二位的回复,但这些办法均不奏效。希望大家继续给予关注。
#4
string temp = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetByte(yourString));
你可是使用上面这种方法,把几种编码方式都试一下,看看那种可以得到正确的字符串。
你可是使用上面这种方法,把几种编码方式都试一下,看看那种可以得到正确的字符串。
#5
意思就是先把字符串转化成Byte[],然后再把Byte[]转换成string。
#6
我明白楼主的意思,在同一个编译平台上(.NET),他应该会*转换的,相信MSDN应该会查吧:),麻烦是要用.net把string转换成byte,用vb6.0把byte转成string,两种语言的unicode不同,我觉得UTF8也是没有用的,本质上差不多的东西,只是UTF8压缩的位数不同,说了这么多,其它我也不会转,关注.;..
#7
心碎无痕理解的正确,应该说是了解了问题的症结所在。MSDN当然可以查,
但老眼昏花,实在查不出来。老了不中用了,向大家请教啊。希望继续给予关注。
但老眼昏花,实在查不出来。老了不中用了,向大家请教啊。希望继续给予关注。
#8
没人关注了,真失望!
#9
这个单独用c#实现比较困难,有一种比较简单的方法就是,你可以先使用vb将存在硬盘中的数据读入到内存,分析后转换成unicode格式,在由c#程序读取。这种方法比较笨,但是也比较直接。
#10
敝人也遇过同样问题,以下是敝人的解决方法:
1、循环处理字符串中的每个字符
a、通过Asc码可以判断是否中文字符,将中文字符的Asc码分解为两个Byte添加到Byte[]中(为了判断中文字符本人在每个中文字符前加入Asc码0)
2、存储Byte[]
3、读出Byte[]
4、循环处理Byte[],判断Asc码,为零时表示后面2Byte是一个中文字符
5、将整理后的字符串显示出来即可
1、循环处理字符串中的每个字符
a、通过Asc码可以判断是否中文字符,将中文字符的Asc码分解为两个Byte添加到Byte[]中(为了判断中文字符本人在每个中文字符前加入Asc码0)
2、存储Byte[]
3、读出Byte[]
4、循环处理Byte[],判断Asc码,为零时表示后面2Byte是一个中文字符
5、将整理后的字符串显示出来即可