这是我以前从未注意到的一个奇怪的问题。
我正在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);> </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," "," ","all")#
</cfoutput>
你会看到空格在那里。
看看这个:http://www-sul.stanford.edu/tools/tutorials/html2.0/whitespace.html
你应该用不间断的空格代替空白,以避免折叠
我认为给出的答案不太理想。
首先,正如其他人所触及的,空白字符序列的折叠是HTML规范的一部分。
如果你想保留空格,你不应该简单地把所有的空格都改成 实体,那不是实体的作用。这是为了一个不会破裂的空间。这不是为了保留嵌入的空白。
@DanBracuk给了你语义上最正确的答案:如果你想在浏览器中呈现文本时保留这些空间,你应该使用
。这就是它的作用,它是正确的工具。我同意Blaise的观点,这是浏览器在html输出中删除额外的空白。
您应该使用format
属性来获得预期的结果:
<cfdump var="#qMyData#" format="text" />