Java 从文本区域读取时不保留换行符
我的java webapp从文本区域获取内容,并发送电子邮件 我面临的问题是,当使用相同的方法读取文本时,textarea消息中的换行符不会被保留Java 从文本区域读取时不保留换行符,java,jsp,servlets,Java,Jsp,Servlets,我的java webapp从文本区域获取内容,并发送电子邮件 我面临的问题是,当使用相同的方法读取文本时,textarea消息中的换行符不会被保留 request.getParameter("message"); 有什么线索可以解决吗 蒂亚 编辑: 文本区域中的内容为: abcd abcd 代码: String message = request.getParameter("message"); System.out.println("index loc for messag
request.getParameter("message");
有什么线索可以解决吗
蒂亚
编辑:
文本区域中的内容为:abcd
abcd 代码:
String message = request.getParameter("message");
System.out.println("index loc for message "+message+" using \\r\\n : "+message.indexOf("\r\n"));
System.out.println("index loc for message "+message+" using \\n : "+message.indexOf("\n"));
System.out.println("index loc for message "+message+" using \\r : "+message.indexOf("\r"));
System.out.println("index loc for message "+message+" using \\n\\r : "+message.indexOf("\n\r"));
输出:
使用-1为消息asdfasdf索引loc\r\n:-1使用-1为消息asdfasdf索引loc\n:-1
使用-1为消息asdfasdf索引loc\r:-1
为消息asdfasdf使用索引loc\n\r:-1
这完全取决于你如何重新发现它 听起来像是在用HTML重新显示它。“原始”换行符不是HTML标记的一部分。右键单击,在webbrowser中查看页面源。你会看到到处都是断线。通常在HTML标记之前和/或之后 为了在HTML演示文稿中直观地显示换行符,实际上应该使用
标记。您可以用
字符串替换换行符,如下所示:
message = message.replace("\n", "<br>");
#消息{
空白:行前;
}
这将显示预先格式化的文本(默认情况下,文本区域会显示该文本)。两个可能的问题:
- textarea中的文本是word包装的,实际上没有任何换行符
- 使用
获得的字符串包含换行符(getParameter()
),但没有许多电子邮件程序预期的回车符(\n
)\r
od
或十六进制编辑器查看文件
如果发现您只是缺少了CRs,您可以对字符串进行一些简单的基于regexp的替换来修复此问题。搜索ASCII代码时,我发现新行的定义与通常的
\n
不同,而是与\r\n
类似
尊敬。在提交表单和服务器端的
decodeURIComponent()
之前,您需要encodeURIComponent()
。我们知道他正在通过电子邮件发送文本,但我们不知道文本到达后如何显示。如果它确实显示为HTML,那么确实有很多工作要做。仅仅保持换行只是问题的一小部分,因为用户可能会恶意或意外地在文本中引入各种有害的标签。回答不错。你是说replaceAll
?@mdma:不,当然不是。正则表达式对于一个简单的字符来说是多余的-逐字符替换。@BalusC。我没有注意到replace()也需要一个CharSequence,它从1.5版开始才出现,所以我只有4年左右的时间注意到…;-)@肖恩:这正是我使用这种风格搜索的原因:getParameter()绝对不包含换行符(\n)。因为连接到它的字符串和换行符(\n)被正确显示,而不是从textarea.Hmm获得的消息。也许是CRs?我发现很难相信浏览器不会发送任何行终止符。事实上,浏览器会发送。当我使用alert
显示javascript中的值时,它会在相应的行中显示内容。所以我放弃。我想解决你的问题的唯一办法是我建立一个项目来复制你正在做的一些事情,这比我愿意做的要多。希望你或其他人最终能想出一个好主意,祝你好运!您只需要在javascript中的请求url中执行encodeURIComponent($(“#idOfTextArea”)),并仅通过request.getParameter(“textareaname”)获取值并保存到DB中