这个问题不是Opened a Jpeg file with notepad, pasted all the text to another notepad and saved, now my jpeg file does not work的重复,因为该问题的所有答案都列出了问题但未提供解决方案。
此外,我试图听起来不像一个不了解编码的人,我在写这个问题之前经历了a painfully long refreshing blog post about encoding。
我的问题基本上是试图找到合适的字符编码(UTF-8,UTF-16,UTF-32,日本JIS Shift,罗马宏等)。我应该在编辑器中查看JPEG文件的字符编码,这样如果我使用相同的编码保存它,当我在图像编辑器中打开时,我的jpeg仍然有用吗?
好的,在回答/评论"它是一个二进制文件,在十六进制编辑器中打开它不要使用编码",我应该让你知道我的问题的目的是不是我试图在文本编辑器中打开并保存JPEG文件。
以下是我要做的事情
我正在设计一个Web服务,它将以XML格式交换请求,其中一个元素将包含二进制的blob数据。既然XML是一个Text文档,所以它可以通过一个解析器,我们试图在文本文档中嵌入那个二进制blob。
现在我知道有很多方法可以做到这一点,例如将blob编码为base64
序列或yEnc
序列。但这不是我的问题。我的问题是,是否有文本字符编码可以让我只是在XML中嵌入原始二进制数据?我可以使用Hex编辑器构建如下所示的XML。
请注意..
和?
文本查看器无法弄清楚这些代码点是什么,因为查看者正在使用ANSI
。
现在,假设没有单个字符编码适合表示jpeg文件中的所有特殊字符,我必须使用二进制文件。我可以将上述XML视为xml文档的大型二进制blob并将其加载到解析器中吗?解析器是否支持以二进制文本形式出现的XML?
编辑:我通过编写一个简单的应用找到了上述答案,.NET 4.6.2
的XML Parser拒绝了这样的XML。
答案 0 :(得分:1)
XML可以根据需要变得复杂,但它具有相当简单的基本规则。其中,list of valid characters。您自己的屏幕截图说明典型的JPEG文件具有相当数量的00
字节:
分配给空控制字符的代码点U + 0000是Unicode和ISO / IEC 10646中编码的唯一字符,在任何XML 1.0和1.1文档中始终无效。
简而言之,如果您要表示的给定char无论如何都是无效的,则编码选择无关紧要。您将能够生成松散类似于XML但不是XML的东西。
唯一的解决方案当然是你已经丢弃的解决方案:编码为纯文本(base64,uuencode,你可以命名)。
在任何情况下,使用XML存储二进制数据在实践中都不能很好地工作。它会破坏数据大小,并且需要仔细编写的pull-parser才能耗尽系统内存。