2009-07-21 86 views
1

我有一個接受文本併發布到服務器的表單。法語字符'à'在經典ASP服務器端和數據庫中被讀爲'Ã'

如果用戶輸入一個法語字符(如'à'),它將被經典ASP代碼讀爲'Ã',並作爲'Ã'存儲在SQL Server 2005數據庫中。

類似的情況發生在其他重音字符上。發生了什麼?

+0

你的意思是經典的ASP或ASP.NET? – 2009-07-21 18:31:23

+0

我的意思是經典的ASP – burnt1ce 2009-07-21 19:06:25

回答

2

這是字符編碼的問題。顯然,您的服務器和數據庫配置了字符集Windows-1252或ISO-8859-1,並且您正在接收UTF-8數據。

您應該檢查您的服務器是否發送了以「charset = iso-8859-1」結尾的Content-Type或Content-Encoding標頭。

我猜你的服務器不會發送文件的字符集,而且默認配置設置爲UTF-8的人發送UTF-8字符作爲iso-8859-1(或Windows-1252)存儲在你的數據庫。

0

請參閱我的回答here瞭解可能發生的情況。

最高限度地需要確保表單帖子中使用的編碼與接收頁面的Response.CodePage匹配。您可以通過在表單元素上放置accept-charset屬性來配置由表單發送的實際字符集。默認的accept-charset是文件字符集。

你究竟有什麼ASP文件代碼頁設置爲(在包含表單和頁面的頁面上)?

你在表單頁面中設置Response.CharSet的值是什麼?