同一个bytes[]数组在两台机器上转成String时内容不同

问题描述

用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的回复:

你最好是给出数据!

怎么给数据?可以传附件吗?
解决方案:
你可以放倒到盘上

时间: 2024-10-26 06:40:26

同一个bytes[]数组在两台机器上转成String时内容不同的相关文章

同一个用户不能再两台电脑上同时登录怎么实现比较好

问题描述 用的是springMVC我测试了下是使用的单例. 解决方案 解决方案二: 客户端是.net做的,通过webservice通讯解决方案三: 可以使用springsecurity解决方案四: 引用2楼longtian1213的回复: 可以使用springsecurity 这个貌似用不起来解决方案五: 没积分了有个问题顺便也在这儿问了吧在mybaits中怎么使用merge语法,或者实现数据存在则修改,不存在则删除的功能也可以谢谢大家了!!解决方案六: 如果你只有一台服务器的话,可以做一个静态

服务器-家里如何在一台机器上布置两个80端口的网站?

问题描述 家里如何在一台机器上布置两个80端口的网站? 机器是Mac Mini 家里如何在一台机器上布置两个80端口的网站? 不想用域名加端口(例如www.aaa.com:8801), 想直接用www.aaa.com 和www.bbb.com 求教!谢谢! 解决方案 域名不一样直接绑定就好了,域名一样才要使用端口区分. 注意你2个域名都要在同一个web服务器上绑定,不要安装了iis,tomcat,分别绑到不同web服务器,80端口只能分配给iis合作tomcat其中一个 解决方案二: 家里 的机

在同一台机器上使用两个不同账号登录出现session问题

问题描述 我们开发了一个系统,我使用admin和test两个账号在同一台机器上登录,出现了一个问题.假设我先用admin登录(不退出),接着用test账号登录,结果admin中session保留的信息变成了test的信息.这个问题怎么解决? 解决方案 很正常啊,登陆信息都是保存在cookie里的.然后,第二个账户登陆的时候,由于cookie的域是一样的,自然会覆盖掉之前的哪个账户.很多网站都是这样.正常情况下,一个用户怎么会同时操作两个账号?有这个需求?如果用户真心希望能够登陆两个账号,那么让他

在同一台机器上,让这3个模拟客户端同时访问这台机器上的同一个数据库。但不知道如何实现,请赐教!

问题描述 在同一台机器上,让这3个模拟客户端同时访问这台机器上的同一个数据库.但不知道如何实现,请赐教! 解决方案 解决方案二:用VB+SQLSERVER2000+ADO练习编写网络版软件,那么在同一台电脑上如何模拟出3个客户端?在同一台机器上,让这3个模拟客户端同时访问这台机器上的同一个数据库.但不知道如何实现,请赐教!解决方案三:数据库连接上直接用IP,不要用(local)就可以模拟了解决方案四:不了解,顶一下~解决方案五:顶................

在同一台机器上运行多个MySQL服务器

    有些情况下你可能想要在同一台机器上运行多个服务器.例如,你可能想要测试一个新的MySQL版本而让你现有生产系统的设置不受到干扰, 或你可能是想要为不同的客户提供独立的MySQL安装一个因特网服务供应商. 如果你想要运行多个服务器,最容易的方法是用不同的TCP/IP端口和套接字文件重新编译服务器,因此他们不是侦听同一个TCP/IP端口或套接字. 假设一个现存服务器配置为缺省端口号和套接字文件, 那么用一个这样configure命令行设置新的服务器: shell> ./configure -

求助 java socket编程c/s在同一台机器上与c/s在不同机器上的区别

问题描述 socket程序,cs在同一个机器上可以正常传递数据,但cs分别在两个机器上就多出了一些数据这是什么原因.列入程序如下:ClientApp.javaimportjava.net.*;importjava.io.*;importjava.lang.*;publicclassClientApp{publicstaticvoidmain(Stringargs[]){try{//创建通讯并且和主机Rock连接SocketcSocket=newSocket("127.0.0.1",80

同一台机器上需要安装多个tomcat怎么配置?

问题描述 同一台机器上需要安装多个tomcat怎么配置? 我需要在同一个计算机上,安装两个tomcat,虽然我把两个端口更改了,但是开启和关闭时,这两个tomcat还是会有相互影响,各位大侠,有没有同一台机器上,配置多个tomcat的方案教程呢,我网上也找了一些,试了还是有问题 解决方案 当第一个tomcat启动后,后面tomcat的server.xml中的端口不管怎么改,仍然会报端口冲突.后来在dos下运行才发现所有的tomcat都会去找CATALINA_HOME和CATALINA_BASE这

Muduo 网络编程示例(五)测量两台机器的网络延迟

本文介绍一个简单的网络程序 roundtrip,用于测量两台机器之间的网络延迟,即"往返时间 / round trip time / RTT".这篇文章主要考察定长 TCP 消息的分包,TCP_NODELAY 的作用. 本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/roundtrip/roundtrip.cc 测量 RTT 的办法很简单: host A 发一条消息给 host B,其中包含 host

路径-各位android的高手,请问怎么得到,判断一台机器上usb盘的目录是什么

问题描述 各位android的高手,请问怎么得到,判断一台机器上usb盘的目录是什么 各位android的高手,请问怎么得到,判断一台机器上usb盘的目录是什么 或者怎么判断一个路径是不是usb盘的 一个实例如下(我现在的一个android设备现状): 1,有内部存储器sdcard,具体路径:/mnt/sdcard 2,有tf卡,具体路径:/mnt/ext_sd 3,有u盘,具体路径:/mnt/usbhost1 我可以得到/mnt/usbhost1,并且确定其是u盘的路径 但是其他设备不一定会和