删除“NUL”字符

Posted

技术标签:

【中文标题】删除“NUL”字符【英文标题】:Removing "NUL" characters 【发布时间】:2013-10-20 09:47:28 【问题描述】:

我的记事本++中有这样的字符

当我试图复制整行时,我实际上是在复制所有内容,直到“NUL”:

File:1

我想要做的是替换那些 null,什么都不是,所以我可以复制我的整行。 也许有任何关键字会告诉notepad++(或任何其他可能有帮助的程序)替换这些字符? 当我选择它时,使用右键单击然后“清除”,它就消失了 - 但我不想一一做。

我不关心消除这个问题的原因,只关心效果(NULs)

【问题讨论】:

【参考方案1】:

这可能会有所帮助,我曾经这样整理我的文件: http://security102.blogspot.ru/2010/04/findreplace-of-nul-objects-in-notepad.html

基本上你需要用正则表达式替换\x00个字符

【讨论】:

是的,这就是我想要的。非常感谢:) 请注意,您应该尝试“\x00”、“\00”或“\0”。对我来说,\x00 和 \00 不起作用。我需要使用 \0 作为替换字符。 @JohnAugust 非常感谢你。 \x00 一直在寻找“正常”空格以及 NUL 字符。 Thx 想在 .dmp 文件中搜索一大块多行文本。但是不幸的是,记事本对我来说崩溃了,可能是因为转储的大小【参考方案2】:

尝试查找和替换。在查找文本框中键入 \x00,选中正则表达式选项。将替换文本框留空,然后单击全部替换。查找和替换的快捷键是 ctrl+H。

【讨论】:

使用 \x00 查找。您可能需要检查正则表达式选项。 你必须使用正则表达式,这个答案是错误的,因为显然你可以像这样复制一个特殊的字符 我根据 SO 的问题给出了答案,他是在记事本 ++ 上而不是记事本上问的。我不知道为什么人们对我的答案投反对票,而其他人却对 AlexShumilov 的答案投赞成票。【参考方案3】:

突出显示单个空字符,goto find replace - 它通常会自动将突出显示的文本插入到查找框中。在替换框中输入空格或留空。

【讨论】:

这不适用于 Notepad++ 中的 NUL 字符。它确实适用于许多其他 ASCII 特殊字符,例如 BEL,但 NUL 只能使用扩展转义码或 RegEx 找到。【参考方案4】:

点击搜索 --> 替换 --> 查找内容:\0 替换为:“空” 搜索模式:扩展 --> 全部替换

【讨论】:

扩展是为了什么?? @rimiro 在某种意义上扩展了特殊转义字符(基本的正则表达式元字符,如 \n 等),而不仅仅是键入的字符。【参考方案5】:

我尝试使用 \x00,但在使用 C# 和 Regex 时它对我不起作用。我在以下方面取得了成功:

//The hexidecimal 0x0 is the null character  
mystring.Contains(Convert.ToChar(0x0).ToString() );  

// This will replace the character
mystring = mystring.Replace(Convert.ToChar(0x0).ToString(), "");  

【讨论】:

这和Notepad++有什么关系? OP 询问了 notepad++ 或任何其他可能有帮助的程序。您能否用一些额外的代码更新答案以使其完整,以便它可以帮助 .Net 中的其他新手(即从驱动器读取文本文件,替换 nul 字符,保存回文本文件,我的意思是 this,以及如何在没有 VS 的情况下启动 C# 代码,例如只使用 csc.exe)。【参考方案6】:

打开记事本++ 选择替换 (Ctrl/H) 查找内容:\x00 替换为: 单击单选按钮 正则表达式 点击全部替换

【讨论】:

【参考方案7】:

我遇到了同样的问题。以上使我走上了正确的轨道,但在我的情况下并不完全正确。所做的工作密切相关:

在 Notepad++ 中打开文件 键入 Control-A(全选) 键入 Control-H(替换) 在“查找内容”中输入\x00 在“替换为”中留空 在“搜索模式”中选择“扩展” 然后点击“全部替换”

【讨论】:

以上是关于删除“NUL”字符的主要内容,如果未能解决你的问题,请参考以下文章

比较字符串忽略 NUL

删除Window上的nul文件

Windows建立和删除nul等特殊文件夹

system权限

Eclipse报错An internal error occurred during: "J2EE Component Mapping Update". java.lang.Nul

C语言字符串打印出现特殊字符是怎么回事?请问如何解决这个问题?