问题描述
用Encoding.GetString()或者用StreamReader读MemoryStream结果都一样,一台机器能读出正确结果,另一台就是另外一个结果,其中缺少了一部分,百思不得其解,是操作系统的原因吗?还有可能是什么原因呢
解决方案
解决方案二:
用同一种字符编码例如:Encoding.UTF8.GetString(buff);
解决方案三:
首先,要明确最开始string转bytes[]用的是什么字符编码
解决方案四:
引用1楼songbing774933的回复:
用同一种字符编码例如:Encoding.UTF8.GetString(buff);
引用2楼songbing774933的回复:
首先,要明确最开始string转bytes[]用的是什么字符编码
两台机器用的是同一种编码转的,即使是编码错误,也应该只是转换出乱码来,不应该缺少一段吧
解决方案五:
看不出来你是怎样写的代码。
解决方案六:
谁告诉你编码错误不会少一段?你用ASCII转一段中文试试
解决方案七:
另外你怎么确定转出来的string不同?目测的吗?如果字体显示不了,也可能少一段
解决方案八:
两台机器能读到同一数据(bytes[]数组),那么你的这个数据是放在哪里的呢?不能排除从公共媒体读取的时候就已经丢失了
解决方案九:
引用6楼shingoscar的回复:
另外你怎么确定转出来的string不同?目测的吗?如果字体显示不了,也可能少一段
你说的有道理。但是我现在的问题是都用GB2312转,两个内容不同,输出到TXT里,少了一大段
解决方案十:
引用7楼xuzuning的回复:
两台机器能读到同一数据(bytes[]数组),那么你的这个数据是放在哪里的呢?不能排除从公共媒体读取的时候就已经丢失了
用了一个文件,都是从同一个文件里读取的
解决方案十一:
引用4楼sp1234的回复:
看不出来你是怎样写的代码。
这是我测试的方法。其实是请求一个URL,返回的数据byte[]是一样的,但是转成string有一台就少了一大段。
解决方案十二:
如果可能的话,你可以给出数据来源和代码当作字符集转换时,如果源字符集不能被转换成目标字符集时,将会在第一个不对应的字符处截断把utf-8向GB2312转,utf-8的两字节和四字节字符都是陷阱理论上将GBK转成GB2312都是要丢字的
解决方案十三:
如果是缺少前面一段的话,可能读流的时候,不是从Position=0开始的
解决方案十四:
引用11楼xuzuning的回复:
如果可能的话,你可以给出数据来源和代码当作字符集转换时,如果源字符集不能被转换成目标字符集时,将会在第一个不对应的字符处截断把utf-8向GB2312转,utf-8的两字节和四字节字符都是陷阱理论上将GBK转成GB2312都是要丢字的
引用12楼Libby1984的回复:
如果是缺少前面一段的话,可能读流的时候,不是从Position=0开始的
还有个很奇怪的是缺的是中间的一段
解决方案十五:
你最好是给出数据!
解决方案:
引用14楼xuzuning的回复:
你最好是给出数据!
怎么给数据?可以传附件吗?
解决方案:
你可以放倒到盘上