TextArea 将所有换行符加倍

mom*_*ari 5 html python google-app-engine textarea newline

今天我遇到了一个非常奇怪的 textarea 行为。整整一天都在修复它,但我仍然找不到解决方案。将不胜感激任何帮助,所以提前致谢。

我正在创建一个 GAE-python 应用程序。我这里有这个小表格:

<form action="/add" method="post">
<div><textarea name="Name" rows="1" cols="60">name</textarea></div>
<div><textarea name="Email" rows="1" cols="60">email</textarea></div>
<div><textarea name="Comments" rows="6" cols="60">comments</textarea></div>
<div><input type="submit" value="Post"></div>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在通过 POST 请求向 python 脚本发送数据(“评论”字段)。但是......不知何故,我总是得到双换行符,或双 CrLf,最终存储在数据库中。但奇怪的是,当我调试请求时,有一些奇怪的东西(在 FireFox+Firebug 和 Chrome+DevTools 中)。

例如,我通过 textarea 编写并发送此评论内容:
c
c
c

在 url 加密的数据中,我看到 c%0D%0Ac%0D%0Ac
所以它必须是 c CrLf c CrLf c
但是当我将未加密的 var 从 FireBug(DevTools) 复制到 NotePad++ 时,它向我显示:

c CRLF
CRLF
c CRLF
CRLF
c CRLF
CRLF

为什么它在解码格式中翻了一番?!当然,当我将结果从数据库打印回浏览器时,我会得到所有这些双断线。(当我通过“数据存储查看器”查看实体的这个 TextProperty 时,它被写成“cc c”)。

还有一件事:
我有一个 flash 应用程序,它向同一个 python 脚本发送后请求,​​并且 flash 文本框中的所有换行符都正确写入。但是,如果我只是尝试通过浏览器界面中的 textarea 打开该数据库实体并保存它(无需编辑),我会再次收到所有换行符加倍。

有没有解决办法?

谢谢你。

Juk*_*ela 2

根据规范和浏览器实践,文本区域中用户输入的换行符会传输 CR LF 对,% 编码为 %0D%0A。这很可能是您的服务器端脚本获取的内容,尽管您可以通过转储它获取的原始数据来验证这一点。接下来会发生什么取决于您的脚本及其与数据库的交互。

不同的操作系统和程序有不同的换行约定,最常见的是单独CR、单独LF、CR LF 对,最后一种是互联网惯例。因此,某些软件组件似乎可能会将 CR LF 解释为两个单独的控制字符,每个控制字符都表示换行符,并且在稍后的某个时刻,每个控制字符都被规范化为 CR LF (或看起来像 CR LF 的东西) )。