1

更新:编辑,因为我不太清楚我之前在说什么。

我有一个提交给服务器端脚本的表单,该脚本使用该数据为 Web 服务生成 XML 输出。如果数据中有无效字符(我假设这只是意味着“在 XML 中不允许”,但可能与编码有关),则 XML 会发出嘶嘶声。该错误经常发生,因为许多用户剪切/粘贴word文档等来填写表格。

我无法修改使用数据或将其放入 XML 的服务器端脚本(我无权访问服务器),因此我无法清理服务器端的数据。为了至少在我们可以添加一些服务器端清理之前缓解这个问题,我想用 javascript 拦截表单提交并清理每个文本输入和“坏”字符的文本区域。

我知道如何遍历表单,并且希望我想在 thisString.replace() 中添加一个正则表达式来处理它。

我不知道的是(a)将 .replace() 与正则表达式一起使用是否是正确的方法,如果是这样,(b)正则表达式中实际应该使用什么。我想在不破坏 XML 输出的情况下允许尽可能多的字符。

谢谢。

4

1 回答 1

2

通常浏览器以 UTF-8 提交数据,无论它是从哪里复制粘贴的,只要您使用 http 标头将编码设置为 utf-8Content-Type: text/html; charset=utf-8

当然,IE 中也有一些例外。

此外,没有非 UTF8 字符之类的东西。您的意思是浏览器以某些 utf-8 不兼容的编码对表单进行编码,例如 Windows-1252。

除了将字符限制为 ASCII 字符外,您在 javascript 中无能为力,但这并不能真正阻止普通用户之外的任何事情。无论如何,在编码攻击的情况下,您必须始终检查服务器端的编码。

于 2012-12-10T16:34:13.313 回答