hi.pdf
我用 word创建了一个简单的 pdf [ ] hi
,当我在 Notepad++ 中打开它时,它的编码是 ANSI,我认为这是 Notepad++ 的最佳猜测,当我另存为 hiSaveAs.pdf
。
但是,当我从 Notepad++ 复制内容hi.pdf
,粘贴到新文件并hiANSI.pdf
使用 ANSI 编码保存时,文件已损坏且无法打开:
Error, failed to load pdf document.
- 当我在 Notepad++ 中重新打开时
hiANSI.pdf
,它将 UTF8 列为编码,并且当我将它与 进行比较时hi.pdf
,我注意到它在hi.pdf
包含NUL
字符的位置有空格: - 如果我将编码从
hiANSI.pdf
UTF8 更改为 ANSI,文本则会变得hi.pdf
更加不同:
有人能解释一下这里发生了什么吗?
- 为什么另存为工作,但将完全相同的文本复制到新的 Notepad++ 文件中会导致出现空格而不是字符
NUL
? - 为什么Notepad++认为
hiANSI.pdf
是UTF8,但是却hi.pdf
是ANSI?
这做不是回答这个问题。
MSB 未被剥离。看一下十六进制比较:
例如,为什么在 0D 和 25 (第一行,第 10 个字节)之间添加 0A?
更新:
我注意到 Notepad 在“帮助”方面做得比 Notepad++ 少得多。例如,当我使用 Notepad 而不是 Notepad++ 将 hi.pdf 保存为 hiANSI.pdf 时,Notepad 提供的唯一帮助是在 (回车0x0A
) 后添加 (换行),并将(NUL)0x0D
替换为(空格):0x00
0x20
如果我将 hi.pdf 保存为 hiANSI.bin,它所做的就更少了。它只是替换0x00
为0x20
:
在上述两种情况下,它生成了有效的 PDF,但其中“hi”被“IJ”替换:
更新
如果我将 hiANSI.pdf 中的以下 0x20 字节替换为 0x00 以匹配 hi.pdf,它会显示“hi”而不是“IJ”,但字体不同:
以下是我更改的两个字节(以黄色突出显示):
为什么改变这两个字节会产生这种效果?