簡體   English   中英

具有特殊字符的 cfinvokeargument 在 SELECT 中不起作用

[英]cfinvokeargument with special character not working in SELECT

我有一個 cfinvoke:

<cfinvoke component="cfcs.people" method="getPerson">
   <cfinvokeargument name="name" value="José">
</cfinvoke>

還有一個 function:

<cffunction name="getPerson" access="remote" returntype="any">
    <cfargument name="name" type="string">

    <cfquery name="qry" datasource="#datasource#">
        SELECT id
        FROM people
        WHERE name = <cfqueryparam value="#name#" cfsqltype="CF_SQL_NVARCHAR">
    </cfquery>

    <cfreturn qry>
</cffunction>

我在people表中有一行name為“José”,但是 cfinvoke 不返回這一行。 任何不包含特殊字符的名稱都有效,但任何具有特殊字符的名稱都不會返回任何行。

是什么導致特殊字符破壞 SELECT,我該如何解決?

嘗試在 a.cfm 腳本中輸出文字字符串

José 

如果瀏覽器顯示下面的亂碼字符串,那么這是一個文件編碼問題,而不是cfinvokecffunction的問題

José 

要解決它,請在腳本頂部將編碼設置為 UTF-8:

 <cfprocessingdirective pageencoding="utf-8"> 

您還可以使用 jvm arg -Dfile.encoding=UTF-8全局更改整個 jvm。

值得注意的是,cfprocessingdirective 經常被誤解。 此處需要它的唯一原因是因為文字字符串José嵌入在 cfm 源中。 如果該字符串最終將被替換為表單字段,那么您將不需要該指令。 原始代碼可以正常工作。

<!--- works in modern versions of CF -->
<cfinvoke component="cfcs.people" method="getPerson">
   <cfinvokeargument name="name" value="#form.name#">
</cfinvoke>

另見<cfprocessingdirective>以及如何不使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM