回 帖 发 新 帖 刷新版面

主题:问一个关于读取文件中中文的问题

我在一个TXT文件中写上一串中文,然后用STREAM打开它,用BYTE[]读取STREAM中的字节串,那么然后怎么重新得到中文呢?
在VB6中用2^16-(RB[i]*256+RB[i+1])就能得到所要的中文的ASCII码,但是在C#中这个码却不能用。
比如“我”的ASCII码是-12590,算上高16位就是52946,分解成两个字节:206与210。在C#中用STREAM读到的是206与210,但是在C#中“我”的ASCII码(也就是(int)((char)'我')是25105。两者没有丝毫联系。
请问,我应该如何从这两个字节中得到我所要的中文?谢谢了!

回复列表 (共2个回复)

沙发

用BinaryReader的ReadChars方法岂不更容易,只需要设定好指定的编码即可。

“在VB6中用2^16-(RB[i]*256+RB[i+1])就能得到所要的中文的ASCII码,但是在C#中这个码却不能用。”——你获得的不一定是ascii码,根据编码的不同会获得不同的码。所以如果你想用读取字节数组再加工的方法来实现,其实就相当于自己重新实现BinaryReader的ReadChars方法。造轮子并不是一直都那么容易的。

板凳

太谢谢了!
我找到那个编码了,是Default。
谢谢。

BinaryReader BR=new BinaryReader(FR,System.Text.Encoding.Default);

我来回复

您尚未登录,请登录后再回复。点此登录或注册