1

これは私が今まで気付かなかった奇妙なものです。

iSeries/DB2 データベースに対して ColdFusion 8 で SELECT クエリを実行しています。

最も単純な形式のクエリを次に示します。

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

選択されている値はXXX 111(2 つの文字列の間の 2 つのスペース) です。クエリによって返される値は次のとおりですXXX 111(2 番目のスペースが削除されます)。

<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 が 2 番目のスペースを削除するのはなぜですか? 取得しようとしている正確な値を確実に取得するための回避策はありますか?

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

HTML出力で余分な空白を削除しているのはブラウザであるというBlaiseに同意します。期待される結果を得るには、属性を
使用する必要があります。format

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