【发布时间】:2010-06-30 05:31:09
【问题描述】:
我们在追踪用户提交的数据中的 \u2028(行分隔符)的来源时遇到了很多麻烦,这会导致 Firefox 中出现“未终止的字符串文字”错误。
因此,我们正在考虑在将其提交到服务器(然后是数据库)之前将其过滤掉。
在大量搜索和阅读其他人的问题之后,很明显我必须在提交到数据库之前过滤掉这些字符。
在编写过滤器之前,我尝试搜索字符以确保它可以使用以下方法找到它:
var index = content.search("/\u2028/");
alert("Index: [" + index + "]");
我每次都得到 -1 作为结果,即使我知道字符在内容变量中(我已通过服务器端的 Java jUnit 测试确认)。
假设 content.replace() 的工作方式与 search() 相同,为了查找和去除这些行分隔符,我是否做错了什么或遗漏了什么?
【问题讨论】:
-
你的编码是什么?在 HTML 中则不同:fileformat.info/info/unicode/char/2028/index.htm
-
编码无关紧要,@Peter。 JavaScript \u 转义总是使用十六进制代码点。
-
谢谢@Matthew。所以基本上通过使用 \u 你可以让 JavaScript 做任何必要的转换。
-
Unicode 字符全部从 0 到 0x10FFFF(理论最大值)连续编号。代码点只是分配的数字。 JS 字符串文字、该页面的标题等使用它。 UTF-8 将特定的字节序列映射到每个代码点,但这与此处无关。
标签: javascript regex firefox unicode