简单的网络服务器:表单发布数据以quoted-printable编码
Posted
技术标签:
【中文标题】简单的网络服务器:表单发布数据以quoted-printable编码【英文标题】:Simple web server: form post data is encoded in quoted-printable 【发布时间】:2016-04-17 04:14:48 【问题描述】:我正在尝试实现一个基本的 http 服务器代码来呈现 Web 表单并在用户点击提交时处理发布的数据。代码托管在这里:http://www.codeproject.com/Articles/137979/Simple-HTTP-Server-in-C
但是,我收到了我不想弄乱的引用可打印格式的帖子数据。如何使所有内容都以 UTF-8 编码包装?
也许您可以阐明我的特定问题,或者您可以建议一种不同的方法来呈现 Web 表单并处理提交的数据。还是谢谢你... Sample webform and post data
【问题讨论】:
【参考方案1】:您正在混合苹果和橙子。内容传输编码将字符数据封装在一个健壮的包装器中,该包装器可以转义任何在协议级别上有意义的字符。这是不管数据中的字符集。在quoted-printable 数据中,您可以找到任何字符集中的字符数据(或二进制数据,尽管base64 通常是选择的内容传输编码)。
因此,重申一下,您没有非此即彼的选择——您收到的字符数据将具有内容传输编码(可能是透明的;尽管 MIME 称其为“二进制” “8bit”和“7bit”内容传输编码也是透明的,虽然只适用于某些受限类型的数据)和字符编码(可能是“US-ASCII”又名普通的旧 7-位字符数据,具有非常有限的字符库,或“ISO-8859-1”,它是 8 位,因此具有稍大的库,但仍受限制;或 Unicode 编码之一,例如“UTF-8”) .
如果不处理 MIME 的这一方面,您确实无法处理 HTTP。
【讨论】:
我知道在某些时候我误解了某事。关于封装。谢谢你说清楚!然而,似乎没有合适的工具来解开该字符数据。您能否建议转换引用可打印的帖子内容的提示? quoted-printable 编码非常简单,在RFC2045 的第 6.7 节中有完整记录;但简而言之,任何字节都可以编码为一个 ASCII 序列,该序列由一个等号和两个 ASCII 十六进制数字组成。此外,等号和换行符的序列将被简单地删除,以允许透明换行到有限的宽度。我敢肯定,找到实现这一点的 C# 库并不难,但它不是我熟悉的语言。以上是关于简单的网络服务器:表单发布数据以quoted-printable编码的主要内容,如果未能解决你的问题,请参考以下文章