问题标签 [null-character]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1077 浏览

django - 空字节和多部分/表单数据的后果是什么?

第三方向我们发送了一个平面文件,该文件应该包含专门可打印的 ASCII 字符。但是,我们发现0x00文件中间有一个大约 50 字节的字符串。

我们希望能够将文件上传到我们的 Web 应用程序,但我发现 Django 似乎不喜欢 multipart/form-data 中的空字符。如果我删除空字符,则上传成功。(抱歉,我目前没有可用的堆栈跟踪,但如有必要会生成一个)

我们可以预处理文件以删除空字符和/或与我们的第三方合作修复他们的文件生成器,但我不喜欢留下这样的神秘问题。

这听起来像是 Django 中的错误,还是我不完全理解的 multipart/form-data 的某些方面?我是否需要设置某种传输编码,以便 Django 不会挂断空字符?

0 投票
2 回答
8977 浏览

c++ - 如何从具有 null(0) 字符的 char 数组创建 C++ istringstream?

我有一个 char 数组,其中包含随机位置的空字符。我尝试使用这个数组(encodedData_arr)创建一个 iStringStream,如下所示,

我使用这个 iStringStream 将二进制数据(Iplimage 的图像数据)插入到 MySQL 数据库 blob 字段(使用 MySQL Connector/C++ 的 setBlob(istream *is) )它只存储字符到第一个空字符。

有没有办法使用带有空字符的 char 数组创建 iStringStream?

0 投票
1 回答
3028 浏览

regex - 如何将 Visual Studio 二进制编辑器中的空字节 (0x00) 与使用正则表达式的查找进行匹配?

在 Visual Studio 二进制编辑器中打开一个包含空字节 (0x00) 的文件,然后使用快速查找功能 (Ctrl +F) 查找空字节。

我原以为我可以使用诸如 \x00 之类的正则表达式来匹配空字节,但它不起作用。使用此方法搜索任何其他十六进制值都可以正常工作。

这是一个 VS 错误,“功能”,还是我只是错过了什么?有解决办法吗?

0 投票
1 回答
284 浏览

c++ - 为什么这个 C++ 程序打印不相关的字符?

A-Z嘿,我是 C++ 编程的新手,我已经掌握了窍门,但我被困在一个简单的问题上输出我得到了不需要的额外字母,就像"|[|"我知道我必须放置一个终结符一样,我做了但似乎没有用。这是我的程序草稿。

0 投票
2 回答
3708 浏览

c++ - 存储 NUL 字符(ASCII 0)

我用 C++ 创建了一个程序,提示用户输入文件名和请求的文件大小。程序检查请求的文件大小是否大于实际文件大小,然后在文件末尾添加空字符(带有 code 的字符0),直到达到请求的文件大小。
我已经这样做了(使用 fstream):

它就像我想要的那样工作。我知道这是一个糟糕的代码,因为它可能会通过向它发送许多调用来折磨硬盘(顺便说一下它很慢)。这只是出于测试原因。然后,由于这个问题,我决定创建一个存储 NUL 字符的变量并将整个变量一次保存到文件中(而不单独保存每个字符)。
然后问题出现了......因为 NUL 字符(也称为空终止符)终止了字符串,我无法以任何方式存储这些零。
我尝试了一个字符数组、一个字符串甚至一个字符串流,但都没有奏效(关于字符串流有一些有趣的地方,当我使用它时,文件的内容看起来像这样:)0x47c274。无论如何,它并没有像我预期的那样工作。
有没有存储空字符数组的有效方法?

0 投票
2 回答
716 浏览

sqlite - 带有 NUL 的 SQLite 字符串

  1. SQLite 3 中的字符串可以包含NUL字符吗?
  2. 如果 1 的答案是“是”,那么它们如何写在 SQL 查询中?SQLite 似乎没有chr或没有char功能。
0 投票
4 回答
2069 浏览

linux - 在linux中,文件末尾没有空字符是否正常

在linux中,文件末尾没有空字符是否正常?

我创建了一个空文件并用鼠标垫打开了写 az。

保存。

当我用十六进制编辑器打开文件时,没有空字符,但有 0a。

我应该在文件末尾放什么空字符?

当我用系统调用编写文件时。

是0a吗?还是0?

谢谢

0 投票
4 回答
35800 浏览

bash - 将包含空字符 (\0) 的字符串分配给 Bash 中的变量

在尝试通过使用 NULL 字符作为分隔符正确处理文件/文件夹名列表(请参阅我的其他问题)时,我偶然发现了我不理解的 Bash 奇怪行为:

将包含一个或多个 NULL 字符的字符串分配给变量时,NULL 字符会丢失/忽略/不存储。

例如,

但:

这意味着我需要将该字符串写入文件(例如,在 /tmp 中)并在不需要或不可行直接管道的情况下从那里读回它。

Z shell (zsh) 中执行这些脚本时,在这两种情况下都会保留包含 \0 的字符串,但遗憾的是,我不能假设运行我的脚本的系统中存在 zsh,而 Bash 应该存在。

如何在不丢失任何(元)字符的情况下有效地存储或处理包含 \0 字符的字符串?

0 投票
1 回答
4557 浏览

buffer-overflow - 缓冲区溢出地址中的 NULL 字符

我正在尝试重现缓冲区溢出。我试图传入的地址中有两个空的十六进制字符(即 0x00547e00)。后面还有 4 个字节(即 0x11111111 和 0x22222222)。如果我使用 gdb 传递这些,它会在写入我想要的内存时跳过空字符(即 1111547e 22221111 2222####)。是否有一个我可以传入的字符不是空字符但不影响我的地址?

我想到的一个解决方案是找到一些已经清零的内存,让第一个地址指向它,然后用垃圾覆盖,直到到达那个清零的内存,我在那里覆盖它。但是,这仅在我有 2 个字节的内存时才有效,并且我试图通过 6 个字节。

0 投票
4 回答
43027 浏览

c - (char)0 和 '\0' 有什么区别?在 C 中

(char)0使用和'\0'表示字符数组中的终止空字符有什么区别?