每当我在我的javascript源代码中使用\ u2028字符文字,内容类型设置为"text/html; charset = utf-8"时,我会得到一个javascript解析错误.
例:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>json</title>
<script type="text/javascript" charset="utf-8">
var string = '? ';
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果<meta http-equiv>遗漏了,一切都按预期工作.我在Safari和Firefox上测试了这个,两者都表现出同样的问题.
有关为什么会发生这种情况以及如何正确解决此问题的任何想法(不删除编码)?
编辑:经过一些更多的研究,具体问题是使用JSONP返回问题字符.然后由浏览器解释,它将u2028作为换行符读取并抛出有关字符串中无效换行符的错误.
这很简单:如何删除特殊字符的ruby字符串?这是字符:http: //www.fileformat.info/info/unicode/char/2028/index.htm
这是字符串,句点和结尾引号之间有两个特殊字符:
"Each of the levels requires logic, skill, and brute force to crush the enemy.??"
Run Code Online (Sandbox Code Playgroud)
我没试成功:
string.gsub!(/[\x00-\x1F\x7F]/, '')
Run Code Online (Sandbox Code Playgroud)
和 gsub("/\n/", "")
我正在使用ruby 1.9.3p125