System.Text.Encoding.UTF8.GetString 的问题。

问题描述

代码如下:Byte[]szServerIP=newByte[128];stringa=System.Text.Encoding.UTF8.GetString(szServerIP);stringb=a.Trim()+"1111";Debug.Log(b);发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!

解决方案

本帖最后由 jxj31 于 2015-12-17 19:54:19 编辑
解决方案二:
用a.Trim('')
解决方案三:
Byte[]szServerIP=newByte[128];//定义一个长度为128的字符数组,每个元素初始值为空字符stringa=System.Text.Encoding.UTF8.GetString(szServerIP);//把字符数组转换成字符串,就是128个空字符串组成的字符串咯stringb=a.Trim()+"1111";//128个空字符串和字符串1111进行连接

b不会为空啊
解决方案四:
又是这个问题,C#字符串以结束,就是说碰到,认为是串的结尾问题不在于Byte[]szServerIP,而在于GetString(szServerIP)方法,因为没有初始化szServerIP,各个元素为空,于是每个元素对应的子串是:,整个a=……,128个输出a时,从左起,第一个就是,系统认为结束b=a.Trim()+"1111";就是……1111,输出b时,左端起,也是第一个碰到,结束验证测试Byte[]szServerIP=newByte[128];szServerIP[0]=(byte)'k';stringa=System.Text.Encoding.UTF8.GetString(szServerIP);则a,b都是k若改为szServerIP[127]=(byte)'k';a,b仍然什么都没有
解决方案五:
发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!b.Replace("","");
解决方案六:
Byte[]szServerIP=newByte[128];stringa=System.Text.Encoding.UTF8.GetString(szServerIP);---------------------------------------------------------------------------------------------------------------------------------最好还是先把这种东西打倒,保证不再有。
解决方案七:
很显然,对于分不清上述代码跟代码Byte[]szServerIP=newByte[128];varlen=0;stringa=System.Text.Encoding.UTF8.GetString(szServerIP,0,len);

的区别的人,我们要从“根”上去整治。因为我们根本不需要留着这样的程序啊。
解决方案八:
引用4楼From_TaiWan的回复:

发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!b.Replace("","");

不同编译环境,决定b的值。未必b都是空
解决方案九:
引用7楼lovelj2012的回复:

Quote: 引用4楼From_TaiWan的回复:
发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!b.Replace("","");

不同编译环境,决定b的值。未必b都是空

详情?
解决方案十:
你的a从道理上来说他压根就不存在以为他是空字符所以他的值是..128个这个是没有意义的在C/C++中他直接就是空字符因为在程序中字符串是以作为一段字符串的结束的但是C#中由于string是一个对象他有Length属性所以他“不需要”之类的标志来区分一段字符串的结束你给他他也只能认栽了不能说你给个赋值""他的lenght还是0他的值将会是2不过是两个没有意义的空字符而已所以就是你上面描述的情况你什么都没看到长度却是128
解决方案十一:
引用8楼From_TaiWan的回复:

Quote: 引用7楼lovelj2012的回复:
Quote: 引用4楼From_TaiWan的回复:
发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!b.Replace("","");

不同编译环境,决定b的值。未必b都是空

详情?

我在win732bitenterprise+visualstudio2010试了下b的输出是:128个空字符串+1111
解决方案十二:
引用10楼lovelj2012的回复:

Quote: 引用8楼From_TaiWan的回复:
Quote: 引用7楼lovelj2012的回复:
Quote: 引用4楼From_TaiWan的回复:
发现a的值为"";长度为128,b的值也为"";怎么让b的值为"1111";谢谢!b.Replace("","");

不同编译环境,决定b的值。未必b都是空

详情?

我在win732bitenterprise+visualstudio2010试了下b的输出是:128个空字符串+1111

我的win7,32位,VS2008,空的
解决方案十三:
引用6楼sp1234的回复:

很显然,对于分不清上述代码跟代码Byte[]szServerIP=newByte[128];varlen=0;stringa=System.Text.Encoding.UTF8.GetString(szServerIP,0,len);

的区别的人,我们要从“根”上去整治。因为我们根本不需要留着这样的程序啊。

P哥的意思好像是说按照实际数据长度分配空间。借本帖顺便问下:分配的128个存储空间没有初始化,假如在szServerIP[127]这个位置,以前的程序保存了200这个数(或者某个数据),而且程序结束时,没有free也没有析构(非托管程序),那么我们的程序会不会读出这个值?

时间: 2024-09-26 00:41:04

System.Text.Encoding.UTF8.GetString 的问题。的相关文章

Java跟C# System.Text.Encoding.UTF8.GetBytes()后数组值不一致

问题描述 stringstr="尊敬的(先生/女士),您成功购买的门票,冰雪欢乐世界开业周OTA电子全价票共1人,您可凭此二维码在2015-05-01检票入园.电子新票种凭证:(二维码),订单号:6314914502.彩信不能删除.不能转发.本凭证验证后即失效,切勿转发.友情提示:如二维码出现错误,可用填写的二代身份证直接刷卡入园,或凭手机号和身份证号打印凭证入园.[彩信]";//一样的字符串信息:C#代码byte[]cc=System.Text.Encoding.UTF8.GetBy

System.Text.Encoding.UTF8.GetBytes()问题

问题描述 stringstr="尊敬的(先生/女士),您成功购买的门票,冰雪欢乐世界开业周OTA电子全价票共1人,您可凭此二维码在2015-05-01检票入园.电子新票种凭证:(二维码),订单号:6314914502.彩信不能删除.不能转发.本凭证验证后即失效,切勿转发.友情提示:如二维码出现错误,可用填写的二代身份证直接刷卡入园,或凭手机号和身份证号打印凭证入园.[彩信]";//一样的字符串信息:C#代码byte[]cc=System.Text.Encoding.UTF8.GetBy

System.Text.Encoding属性为何显示出来总是灰的?

问题描述 System.Text.Encoding属性是系统默认的DataObject的共有属性,一般都不在属性浏览器中显示的,当我用PublicOverloadsPropertyEncodingasSystem.Text.Encoding的方式重载它之后,它能显示出来,但却是灰的?能让它成为可点击选择的吗? 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f

C#中Encoding.Unicode与Encoding.UTF8的区别

原文地址:点击打开链接 今天在园子首页看到一篇博文-简单聊下Unicode和UTF-8,从中知道了UTF-8是Unicode的一种实现方式: Unicode只是给这世界上每个字符规定了一个统一的二进制编号,并没有规定程序该如何去存储和解析. 可以说UTF-8是Unicode实现方式之一... 在闪存中记录这个收获时,@飞鸟_Asuka在回复中提了一个很好的问题:"那么在选择编码方式的时候为什么unicode和utf8会是分别的两个选项呢?" 在C#中,System.Text.Encod

C# 串口传输 Encoding.Default.GetString(chData, 0, iL) 出错Argumentexception 参数名bytes

问题描述 终端是winCE系统,PC是xp系统,二者通过串口传输文件,上传还正常,从PC端下载,就出错,ThreadCOMth;byte[]receiveDatas;byte[]changeData;List<byte>buffer=newList<byte>();privatevoidComDevice_DataReceived(objectsender,SerialDataReceivedEventArgse)//接收到的内容:文件名接收正确,文件内容与:FSEND连在一起{t

socket编程vb.net Encoding.Unicode.GetString(bytes)后如何清除空值

问题描述 socket编程服务端接收客户端请求后,将byte数组转成字符串vb.netEncoding.Unicode.GetString(bytes)但转换后的字符串后有很多空值(十六进制查看为00和3F),如何清除这些空值.多谢! 解决方案 本帖最后由 studentno2 于 2016-02-09 15:36:39 编辑解决方案二:我是这样处理接收的数据的[code=csharpbyte[]buffer=newbyte[1024*1024*2];intr=socketSend.Receiv

请问系统信息:sun.jnu.encoding=UTF-8可以修改吗

问题描述 请问:System.getProperties():得到的系统属性信息sun.jnu.encoding=UTF-8这个属性可以修改吗?配置文件在什么地方,能不能修改.. 解决方案 解决方案二:系统的参数和环境变量,你得从操作系统或JRE的配置哪改,最好不要动啦,加还是可以的

java-eclipse运行程序时 “错误: 找不到或无法加载主类 Dfile.encoding=UTF-8”

问题描述 eclipse运行程序时 "错误: 找不到或无法加载主类 Dfile.encoding=UTF-8" 今天在新机器上安装eclipse,在编译项目的时候,报错 "错误: 找不到或无法加载主类 Dfile.encoding=UTF-8" 网上查找不到主类的解决方案都是关于java环境变量的,不过环境变量我弄过很多次了,而且在eclipse里运行hello world也是可以正常输出的 好迷 求指教 (ps:工程是maven项目,项目内容来自于他人,我也不是很

请教rails连接mysql时没有设置encoding:utf8后保存的中文乱码如何转为正常

问题描述 在database.yml中没有设置encoding:utf8,使用时界面上都正常,但是保存到mysql数据库中的中文都是乱码.现在在database.yml中加上了encoding:utf8,结果以前保存的中文数据在界面上都变成乱码了..,但是新添加的数据都没问题,数据库和界面上都正常请问是否有办法把数据库中以前保存的乱码都转换成正常的数据?问题补充:ek2兄:我以前保存成乱码的数据还有用处,希望能恢复. 解决方案 把乱码的数据全部dump出来保存为SQL文件.然后用UltraEdi