2016-09-26 46 views
3

我有一個連接到SQL Server數據庫的Lucee上運行的Coldfusion應用程序。爲什麼某些字符沒有從CFQUERY正確注入SQL Server?

當我直接在SQL Server Manager中運行以下查詢:

UPDATE article 
SET content='20m²' 
WHERE id=3159 

列被填充罰款20平方米。

然而,它只是運行這個CFML頁面中運行時:20m²

UPDATE文章 SET含量= '20平方米' WHERE ID = 3159

列獲取與填充

與此相似,此附加字符出現。這也與其他一些特殊字符一起出現,但大多數都很好。這是用jdbc連接器的一些配置嗎?我沒有看到上述兩者之間應該有什麼區別?將值放在cfqueryparam標記中沒有區別。

感謝

+0

什麼版本的CF?如果小於CF11,你可能想看看'cfprocessingdirective'。 – Beginner

+1

它是什麼樣的專欄?它是NVarchar?如果處理指令不起作用,您可以嘗試使用unicode語法'content =N'20m²''...還要確保使用「cfqueryparam」來綁定變量。 –

+1

您的文件是在Windows1252或Utf8中編碼的?服務器是否期望文件具有其他編碼? –

回答

3

如果它是硬編碼的,我相信你會想一定要保存爲Unicode UTF-8的文件。

enter image description here

另外,還要確保您的JVM參數將處理爲好。 管理員>服務器設置> Java和JVM。 將「-Dfile.encoding = UTF-8」添加到參數中。

enter image description here

+0

由於涉及到一個數據庫查詢,所以它不僅僅是改變頁面編碼;-)很可能硬編碼只是用於測試。所以問題的另一方面是如何確保將正確的值傳輸到數據庫*和*正確存儲。詳細說明整個週期將是一件好事... – Leigh

+0

消除過程 - 確保具有「20m²」的文件正在保存並正確回讀。這可能是事情的數據庫結束工作正常。 – Jules

相關問題