Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
擦洗表格提交数据;“坏的”;预提交javascript中的字符?_Javascript_Regex_Utf 8_Character Encoding - Fatal编程技术网

擦洗表格提交数据;“坏的”;预提交javascript中的字符?

擦洗表格提交数据;“坏的”;预提交javascript中的字符?,javascript,regex,utf-8,character-encoding,Javascript,Regex,Utf 8,Character Encoding,更新:编辑,因为我之前不太清楚自己在说什么 我有一个表单提交到服务器端脚本,该脚本使用该数据为web服务生成XML输出。如果数据中存在无效字符(我假设这只是表示“不允许在XML中使用”,但可能与编码有关),XML会发出嘎嘎声。该错误经常发生,因为许多用户剪切/粘贴word文档等以填写表单 我无法修改使用数据的服务器端脚本或将其转换为XML(我无法访问服务器),因此无法清理数据服务器端。为了至少缓解这个问题,直到我们可以添加一些服务器端清理,我想用javascript拦截表单提交,并清除每个文本输

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

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

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

我知道如何在表单中循环,我希望我能在这个string.replace()中加入一个正则表达式来处理它

我不知道的是(a)用正则表达式使用.replace()是否正确,如果正确,(b)正则表达式中应该使用什么。我希望在不中断XML输出的情况下允许尽可能多的字符


谢谢。

一般来说,只要您使用http头
内容类型将编码设置为UTF-8,浏览器就会以UTF-8的形式提交数据,无论数据从何处复制粘贴;字符集=utf-8

当然,IE中也有一些例外

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


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

无论您做什么,您都需要提醒服务器端负责人执行此操作。JS只能清理系统正常用户的数据。恶意用户可以通过使用简单的tcp连接到http服务器轻松绕过JS。请再说一遍?UTF-8可以对完整的100000项Unicode目录进行编码。你的用户提交的是什么类型的字符?谢谢。。。现在我更明白我到底想问什么了;问题已更新。