【发布时间】:2019-03-03 05:12:25
【问题描述】:
我们正在将一些 Delphi 应用程序迁移到基于 Web 的应用程序,在此期间,一些应用程序同时在这两种应用程序中运行。
我们有一种情况,Web 应用程序可以正确读取 Delphi 应用程序编写的换行符,但 Delphi 应用程序在将文本保存在 Web 应用程序中时忽略了换行符。
据我所知,Delphi 应用程序在任何行的末尾都写了#$D#$A。在数据库表中,这些被视为CR LF。
当 Web 应用程序保存文本的保存块时,Delphi 读取时换行符变为#$A。在数据库中,这些似乎仍然是CR LF
想法?
【问题讨论】:
-
之前的 XML 相关评论可能不适用。但是这个answer 解决了 HTML 规范。
-
#$A(或#10,^J)是 Linux 和其他操作系统中使用的行尾代码。你将不得不转换。看我的小工具eolconv的代码:github.com/rvelthuis/CommandLineTools/blob/master/eolconv.dpr.
-
我不知道在这种情况下“数据库”是什么,但我遇到了 Oracle 和 PL/SQL 开发人员的问题,其中数据库中的换行符实际上是 unix 换行符( LF、$A、\n,无论您喜欢哪种表示形式),但数据库工具将其转换为运行它的客户端(Windows),因此将它们显示为 CR LF。 Delphi 没有做这种神奇的翻译,实际上只是把它们读成了 LF。无论如何,您要么必须一致地存储它,要么在从数据库中读回它时对其进行转换。在 Delphi 中,您可以使用函数
AdjustLineBreaks进行转换。 -
本例中的数据库是 MySQL。我假设(可能不正确)作为原始数据显示 CR/LF,Delphi 和 Web 应用程序都在向其写入#13#10。很可能是客户妨碍了这里。
-
@GolezTrol 这确实是问题所在。您能否将您的评论切换为答案,以便我接受。我也不知道
AdjustLineBreaks
标签: mysql angularjs delphi delphi-xe7