Encoding Dart语言和http_服务器包:处理字符“&”时出现异常

Encoding Dart语言和http_服务器包:处理字符“&”时出现异常,encoding,utf-8,dart,iso-8859-1,httpserver,Encoding,Utf 8,Dart,Iso 8859 1,Httpserver,我在使用http_服务器Dart包发送和处理某些文件时遇到问题。processRequest方法在处理主体时引发异常。这是异常:未捕获错误:HttpException:未处理的HTTP实体令牌 我按如下方式调用processRequest: HttpBodyHandler.processRequest(request, defaultEncoding: Encoding.getByName("ISO-8859-1")).then((body) { (...) },

我在使用http_服务器Dart包发送和处理某些文件时遇到问题。processRequest方法在处理主体时引发异常。这是异常:未捕获错误:HttpException:未处理的HTTP实体令牌

我按如下方式调用processRequest:

    HttpBodyHandler.processRequest(request, defaultEncoding: Encoding.getByName("ISO-8859-1")).then((body) {
        (...)
    }, onError: _printError);

仅当正文包含字符&时,ISO-8859-1和UTF-8才会发生此异常。有没有办法解决这个问题?

这是http\U服务器Dart包中的一个错误。我们正在尝试解码来自multipart/formpost的值中的HTML实体值。对HTML实体的解析是错误的,并导致其中包含&个字符的值不起作用

我做了这个修复,它从multipart/formpost中删除了值的HTML实体解析

浏览器Chrome、Firefox和Safari可能会使用格式为&xxxxx;对于某些情况下的表单值。一种情况是在HTML表单元素上设置了属性accept charset=latin1。但是,在这种情况下,for中输入的字符没有编码,因此无法进行一般解码。上述修复程序删除了自动HTML实体解码


如果承载表单的HTML页面的内容类型为text/HTML,则不在表单元素上设置accept字符集将导致使用UTF-8;字符集=utf-8。使用所有UTF-8通常会导致较少的问题。

sgjesse,你的补丁修复了这个问题,现在我能够处理一个包含字符的主体。谢谢http_服务器包的0.9.5版修复了该漏洞。