在预提交的javascript中刷新“坏”字符的提交数据?

时间:2012-12-10 16:28:45

标签: javascript regex utf-8 character-encoding

更新:编辑,因为我之前并不知道我在说什么。

我有一个提交到服务器端脚本的表单,该脚本使用该数据为Web服务生成XML输出。如果数据中存在无效字符(我认为这意味着"不允许在XML"中,但可能与编码有关),XML就会破坏。错误经常发生,因为许多用户剪切/粘贴word文档等以填写表单。

我无法修改使用数据的服务器端脚本或将其放入XML(我无法访问服务器),因此无法对数据服务器端进行清理。为了至少缓解问题,直到我们可以添加一些服务器端清理,我想用javascript截取表单提交并擦除每个文本输入和文本区域"坏"字符。

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

我不知道的是(a)使用带有正则表达式的.replace()是否是正确的方法,如果是,(b)正则表达式应该实际应用的内容。我想在不破坏XML输出的情况下允许尽可能多的字符。

感谢。

1 个答案:

答案 0 :(得分:2)

一般情况下,只要您使用http标头Content-Type: text/html; charset=utf-8

将编码设置为utf-8,浏览器就会将数据提交为UTF-8,无论它在何处进行复制。

当然,IE中有一些例外。

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

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