繁体   English   中英

ASCII.GetString()在空字符上停止

ASCII.GetString() stop on null character

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个大问题...我的一段代码:

string doc = System.Text.Encoding.ASCII.GetString(stream);

变量doc以第一个null( /0 )字符结尾(此时缺少许多数据)。 我想得到整个字符串。 而且,当我复制这段代码并在Visual Studio的即时窗口中运行时,一切都很好...

我做错了什么?

1 个回复

不,不是:

string doc = System.Text.Encoding.ASCII.GetString(new byte[] { 65, 0, 65 }); // A\0A
int len = doc.Length; //3

但是Winforms(和Windows API)首先在\\0处截断(显示时)。

示例: https//dotnetfiddle.net/yjwO4Y

我要补充一点(在Visual Studio 2013中), \\0正确显示在一个位置,但是:如果激活了文本可视化器(放大镜),则它不支持\\0并被截断。

为什么会这样? 因为从历史上看,字符串有两个“模型”,即以NUL\\0 )终止的C字符串(因此不能使用\\0作为字符)和具有长度前缀的Pascal字符串,因此可以具有\\0作为字符。 来自维基

空终止的字符串由PDP-11汇编语言的.ASCIZ指令和PDP-10的MACRO-10宏汇编语言的ASCIZ指令生成。 这些早于C编程语言的开发,但是经常使用其他形式的字符串。

现在,Windows用C编写,并使用以null终止的字符串(但是Microsoft改变了主意,COM字符串与Pascal字符串更相似,并且可以包含NUL字符)。 因此,Windows API不能使用\\0字符(除非它们是基于COM的,并且基于COM的很多时候可能经常是错误的,因为它们尚未针对\\0进行全面测试)。 对于.NET,Microsoft决定使用类似于Pascal字符串和COM字符串的内容,因此.NET字符串可以使用\\0

Winforms直接建立在Windows API之上,因此无法显示\\0 WPF相反是在.NET中“从头开始”构建的,因此通常它可以显示\\0字符。

1 Encoding.GetString()返回空字符串

我正在尝试使用WebClient将文件上传到服务器。 我用于发布文件的代码如下: Encoding.UTF8.GetString(file)始终返回一个空字符串。 我检查了字节数组,它不为空。 我也尝试了Encoding.UTF8.GetString(file, 0, file.L ...

2 bundle.getString返回一个空字符串

我无法理解将参数从活动传递到片段的错误。 在MyActivity.class 在我的片段中,我尝试在onCreateView方法中以这种方式获取参数,但字符串始终为null onCreateView() 在评论中询问后添加了代码,我没有以任何方式操纵字符串 ...

4 使用Encoding.ASCII.GetString时获取未知字符

我不经常发问,所以请耐心等待。 我正在用C#为项目创建一个简单的客户端服务器。 用户键入他们的名字,它就会被发送到服务器,服务器在服务器上基本上应该以int响应。 然后,客户端应采用该int并使用DestinyNumberMeaning方法,该方法应给出打印语句。 我正在尝试获取st ...

6 VARCHAR2列上的ResultSet.getString()返回空字符串

免责声明:我实际上对Oracle和Java都不了解。 问题出在其他一些开发人员在某个时间点完成并离开公司的项目中。 现在,我必须设置Web服务器,数据库并启动并运行它们。 代码大概是这样的: POLLID和ISMULTISELECT列按预期返回正确的值。 问题似乎总是返回空字 ...

8 PHP idn_to_ascii返回某些URL的空字符串

我已经使用idn_to_ascii函数成功地转换了数千个URL。 但是有些(在我的列表中大约是1%)不是-它们看起来像普通的url(格式不正确),但是我得到了空字符串。 例: PHP版本是7.0.12。 ...

2017-01-28 11:22:49 0 85   php/ idn
9 SQL Server导入数据变为空白,包括ASCII空字符

我要导入到SQL Server的dat文件中有大量数据(大约5m行)。 第一列应包含ID号。 我可以在“导入向导”的预览中看到ID号,但是当实际导入数据时,它们将变为空白。 没有给出错误信息。 我相信原因是它们包含ASCII空控制字符(0)。 我通过在数据上使用PERL脚本发现了这 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM