我有一个表单接受值的列表,每个值被列在一个单独的textArea行。在我的Servlet,我令牌化基础上,新行字符我从TEXTAREA收到字符串“\ r \ n”,就像这样:新行和浏览器/操作系统兼容性
String[] partNumberList = originalPartNumberString.split("\r\n");
这似乎很好地工作。按预期得到一组值。我相信这是因为浏览器处理标准化新行发送到服务器的方式,无论从哪个OS /浏览器发送表单数据(see this post)。我已经在IE,Firefox,Chrome中测试过......一切看起来都很好,我对此非常有信心。
在接收到服务器端的值之后,我将这些值用于某些查找等,然后将它们写回textArea以进行响应。为了做到这一点,我以我收到的同样的方式将它写回来......我只是建立一个新的字符串,并用“\ r \ n”分隔每个值。然后,我将textArea的值设置为该字符串。
StringBuffer invalidReturnPartList = new StringBuffer("");
for (int i = 0; i < requestedPartList.length; i++)
{
invalidReturnPartList.append(requestedPartList[i]);
invalidReturnPartList.append("\r\n");
}
return invalidReturnPartList.toString();
这也测试所有我已经尝试过的浏览器。然而,我只是担心我是否覆盖了我的所有基地......如果有人在运行Mac,那么“\ r \ n”会在浏览器上正确翻译?那么Linux呢?我认为所有的东西都可以在浏览器中处理,但我只是不确定在这里......所以我的问题是,这看起来是对你还是我错过了什么?
我明白了你的观点。但是,我认为当表单提交时,其提交的内容类型为“application/x-www-form-urlencoded”。 这篇文章(http://stackoverflow.com/questions/760282/do-line-endings-distinctions-apply-for-html-forms)引用了一个文档(http://www.w3.org/MarkUp/html -spec/html-spec_8.html#SEC8.2.1),这似乎意味着当用“application/x-www-form-urlencoded”内容类型提交表单时,换行符总是被“CR LF”取代。 。“在多行文本字段值中,换行符表示为CR LF对,即`%0D%0A'。” – JasonStoltz 2009-06-03 18:13:48