这是一个我从未注意过的奇怪的事情。
我在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会删除第二个空格?是否有一种解决方法可以确保我获得正在尝试检索的EXACT值?
答案 0 :(得分:7)
ColdFusion不是删除空格,而是删除浏览器,或者更直接地删除HTML。
如果输出像@Tomalak所说的值,或类似的东西:
<cfoutput query="qMyData">
#replace(qMyData.myColumn," "," ","all")#
</cfoutput>
你会看到空白就在那里。
检查出来:http://www-sul.stanford.edu/tools/tutorials/html2.0/whitespace.html
您应该用不间断的空格替换空格以避免崩溃。
答案 1 :(得分:2)
我认为给出的答案不太理想。
首先,正如其他人所说,白色空格字符序列的崩溃是HTML specification的一部分。
如果您想保留空白,则不应将所有空格更改为&amp; nbsp;实体 - 这不是该实体的用途。这是一个不会破坏的空间。这不是为了保留嵌入的空白区域。
@DanBracuk为您提供最正确的语法答案:如果您想在浏览器中呈现文本时保留这些空间,则应使用&lt; pre /&gt;。这就是它的用途,它是这项工作的正确工具。
答案 2 :(得分:1)
我同意Blaise的说法是浏览器删除了html输出中的额外空格
您应该使用format
属性来获得预期结果:
<cfdump var="#qMyData#" format="text" />