3

データベースから取得したニュース データを表示する utf8 でエンコードされた RSS フィードを作成しました。データベースのすべての側面をutf8に設定し、データベースに入れたテキストをメモ帳に貼り付けてutf8として保存することで、utf8として保存しました。そのため、RSS フィードがブラウザーに表示されるときはすべて utf8 でエンコードする必要がありますが、シャープ記号の奇妙な疑問符文字が引き続き表示されます :(

これが私の RSS フィード コード (CFML) です。

<cfsilent>
<!--- Get News --->
<cfinvoke component="com.news" method="getAll" dsn="#Request.App.dsn#"     returnvariable="news" />
</cfsilent>
<!--- If we have news items --->
cfif news.RecordCount GT 0>
<!--- Serve RSS content-type --->
<cfcontent type="application/rss+xml">
<!--- Output feed --->
<cfcontent reset="true"><?xml version="1.0" encoding="utf-8"?>
<cfoutput>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>News RSS Feed</title>
        <link>#Application.siteRoot#</link>
        <description>Welcome to the News RSS Feed</description>
        <lastBuildDate>Wed, 19 Nov 2008 09:05:00 GMT</lastBuildDate>
        <language>en-uk</language>
        <atom:link href="#Application.siteRoot#news/rss/index.cfm" rel="self" type="application/rss+xml" />

    <cfloop query="news">
    <!--- Make data xml compliant --->
        <cfscript>
        news.headline = replace(news.headline, "<", "&lt;", "ALL");
        news.body = replace(news.body, "<", "&lt;", "ALL");
        news.date = dateformat(news.date, "ddd, dd mmm yyyy");
        news.time = timeformat(news.time, "HH:mm:ss") & " GMT"; 
        </cfscript>        
    <item>
        <title>#news.headline#</title>
        <link>#Application.siteRoot#news/index.cfm?id=#news.id#</link>
        <guid>#Application.siteRoot#news/index.cfm?id=#news.id#</guid>
        <pubDate>#news.date# #news.time#</pubDate>
        <description>#news.body#</description>
    </item>
    </cfloop>
    </channel>
</rss>
</cfoutput>
<cfelse>
<!--- If we have no news items, relocate to news page --->
<cflocation url="../news/index.cfm" addtoken="no">
</cfif> 

誰か提案はありますか?私はたくさんの研究をしましたが、答えが見つかりません:(

前もって感謝します、

クロミス

4

5 に答える 5

1

これは私にとってはうまくいきました。1 つの cfcontent タグに結合し、charset=utf-8 を追加するだけです。 <cfcontent type="text/xml; charset=utf-8" reset="yes" />

于 2012-07-18T21:22:35.250 に答える
0

あなたのエスケープ機能は単純すぎます。最初に変更&する必要があります。&amp;

&pound;エラーの原因である名前付きエンティティ (つまり ) を使用する場合。

于 2008-12-12T12:51:02.883 に答える
0

データベースに入力するときにすべての入力をサニタイズします。これにより、後でそのようなデータを簡単に表示できます。

于 2008-12-15T09:41:20.343 に答える
0

Adobe ColdFusion 9 以降を使用している場合は、「escapeChars」属性を指定した CFFEED を使用して RSS を作成することを検討してください (CF8 も CFFEED をサポートしていますが、その属性はサポートしていません)。

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7675.html

于 2012-07-23T09:28:13.297 に答える