2011-12-05 78 views
6

我有一個簡單的asp.net web應用程序使用YUI來處理Ajax請求。應用程序從文本框中讀取文本並向服務器發送AJAX請求。以下是代碼有問題通過AJAX請求發送®字符

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input id="txt" name="txt" type="text" value="[Enter some value]" /> 
     <input id="btn" type="button" value="button" /> 
    </div> 
    <div id="out"></div> 
    </form> 
</body> 

以下是初始化Ajax請求

YAHOO.util.Event.onDOMReady(function() { 
    YAHOO.util.Event.addListener("btn", "click", function(evt) { 
     var url = "Server.aspx?type=test&txt=" + document.getElementById("txt").value; 
     var btn = document.getElementById("out"); 
     var cObj = YAHOO.util.Connect.asyncRequest('GET', url, { 
      success: function(o) { 
       btn.innerHTML += "<div>" + o.responseText + " = " + o.responseText.charCodeAt(0) + "</div>"; 
      }, 
      failure: function(o) { 
       confirm("Its failure"); 
      }, 
      cache: false 
     }); 
    }); 
}); 

我在申請做的是接受用戶輸入的字符,將它保存到數據庫,並將其寫入Ajax響應客戶端腳本。系統不支持Unicode(數據庫)。

現在我的問題是,當在文本框中輸入「Registered」®字符(0174)併發送到服務器時,我得到了#65533,這不是用戶在文本框中輸入的內容。此外,®此字符不是Unicode字符,那麼爲什麼會出現這種行爲。

+0

你使用什麼字符編碼?你注意到它不是任何Unicode編碼,但是你沒有指定你使用的*。 – Piskvor

+0

您是指發送的Ajax請求的內容編碼或內容類型? –

+1

可能涉及許多不同的編碼(設置),並且它們全都可能很重要,例如,數據庫編碼,傳遞給客戶端的頁面編碼,在服務器端工作時編碼。順便說一句,你的問題實際上僅限於「註冊」字符,還是有其他字符也顯示這個問題? – codeling

回答

1

從您設置的標籤中扣除後端在asp.net中編程?檢查您在那裏使用的編碼(請參閱,例如here)。您的問題聽起來很像這與您提供給客戶端的內容不同(請參閱服務器設置)。

+0

感謝您爲此嘗試在web.config中添加全局化,但它不適用於我。對此有更多意見? –

+0

如果我理解正確,答覆AJAX請求的服務器部分接收文本,將其放入數據庫併發回;發回的值不正確;但是你檢查了服務器上的值,他們仍然是正確的嗎? – codeling

+0

不是他們也是不正確的......我檢查了服務器上的值,同時調試和內容類型是應用程序/ x-www-form-urlencoded; UTF-8; –

2

忘掉配置問題,您的問題可能與您的編輯器以及它用於保存文件的文件編碼有關。僅設置字符編碼是不夠的,有時甚至不重要,您必須將文件本身保存爲支持字符集的編碼,例如:沒有BOM的utf-8,獲取編輯器,您可以在其中看到此內容信息。當然,在你的Web服務器,數據庫服務器(假設你正在使用它)和客戶端之間可能會發生很多事情。檢出whe web服務器中的缺省字符,數據庫和編輯器的編碼文件用於保存文件。