为什么ColdFusion改变我的查询结果中的值



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

我正在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要删除第二个空格?是否有一个解决方案,以确保我正在获得我试图检索的确切值?

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

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

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

你会看到空格在那里。

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

你应该用不间断的空格代替空白,以避免折叠

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

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

如果你想保留空格,你不应该简单地把所有的空格都改成 实体,那不是实体的作用。这是为了一个不会破裂的空间。这不是为了保留嵌入的空白。

@DanBracuk给了你语义上最正确的答案:如果你想在浏览器中呈现文本时保留这些空间,你应该使用

。这就是它的作用,它是正确的工具。

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

<cfdump var="#qMyData#" format="text" />

相关内容

  • 没有找到相关文章

最新更新