1

这是我以前从未注意到的一个奇怪的问题。

我在 ColdFusion 8 中针对 iSeries/DB2 数据库运行 SELECT 查询。

这是最简单形式的查询:

<cfquery name="qMyData" datasource="#APPLICATION.DataSource#">
    SELECT  'XXX  111'
    FROM    MYLIB.MYTABLE
</cfquery>

选择的值是XXX 111(两个字符串之间有两个空格)。查询返回的值是XXX 111(它删除了第二个空格):

<cfdump var="#qMyData#" /> 

返回如下查询结果:

<TABLE class=cfdump_query>
<TBODY>
<TR>
<TH style="CURSOR: hand" class=query title="click to collapse" onclick=cfdump_toggleTable(this); colSpan=5>query</TH></TR>
<TR bgColor=#eeaaaa>
<TD style="CURSOR: hand" class=query title="click to collapse" onclick=cfdump_toggleRow_qry(this);>&nbsp;</TD>
<TD class=query>00001</TD>
<TR>
<TD style="CURSOR: hand" class=query title="click to collapse" onclick=cfdump_toggleRow_qry(this);>1</TD>
<TD vAlign=top>XXX 111 </TD>

为什么 ColdFusion 会删除第二个空格?是否有解决方法来确保我得到我想要检索的确切值?

4

3 回答 3

7

ColdFusion 没有删除空格,它是浏览器,或者更直接地,HTML。

如果你像@Tomalak 所说的那样输出你的值,或者像这样:

<cfoutput query="qMyData">
#replace(qMyData.myColumn," ","&nbsp;","all")#
</cfoutput>

你会看到空格在那里。

看看这个:http ://www-sul.stanford.edu/tools/tutorials/html2.0/whitespace.html

你应该用不间断的空格替换你的空格以避免崩溃。

于 2012-12-21T16:03:56.693 回答
2

我认为给定的答案不太理想。

首先,正如其他人所提到的,空白字符序列的折叠是HTML 规范的一部分。

如果要保留空格,则不应简单地将所有空格更改为   实体 - 这不是该实体的用途。这是一个不会破坏的空间。这不是为了保留嵌入的空白。

@DanBracuk 为您提供了语义上最正确的答案:如果您想在浏览器中呈现文本时保留这些空间,则应使用 <pre />。这就是它的用途,它是完成这项工作的正确工具。

于 2012-12-21T19:14:17.307 回答
1

我同意 Blaise 的观点,即浏览器正在删除 html 输出中的额外空格。
您应该使用format属性来获得预期的结果:

<cfdump var="#qMyData#" format="text" />
于 2012-12-22T07:13:26.677 回答