2010-11-14 44 views
1

我有一個ASP.Net頁面,用戶可以在​​3210中輸入一些文本並將其提交給服務器。這個文本將被存儲在一個數據庫中,並將被呈現在一個winform應用程序中。瀏覽器代碼頁檢測

如何確保winform application顯示用戶在TEXTAREA中輸入的確切字符。

也就是說,如果用戶輸入特殊語言特定字母,如Æ,Ø和Å,這些字母是丹麥字母,是否會出現潛在問題?
這些字母根據代碼頁有不同的代碼,所以據我所知,我需要知道TEXTAREA控件顯示其輸入的代碼頁。或者我在這裏丟失了什麼?

我試圖在網上找到這個材料,但很難找到解決這個問題的東西。我通常發現頁面在討論服務器要求瀏覽器使用哪些代碼頁,以便正確顯示發送的數據。

但我的問題是另一種方式,即從客戶端到服務器。

回答

0

您可以查看內容類型標題以找出編碼。

欲瞭解更多詳情,請參閱this SO回答相關問題。

1

如果您真的希望確定用戶使用蹩腳瀏覽器發送文本不會破壞您的數據主幹,您也可以使用HEBCI: HTML Entity-Based Codepage Inference技術。

本質這是它如何工作的:

每個代碼頁都有自己的指紋圖譜。例如,單個實體「& ordm」可以用來區分三巨頭:ISO-8859-1/Windows-1252(= BA),MacRoman(= BC)和UTF-8(= C2BA)。

在一種形式中只需添加包含這些指紋作爲實體的一個隱藏的輸入(如&度;, &分,和& MDASH;),並且當用戶提交表單你只需檢查返回的十六進制值,並比較他們對你的指紋表。 如果這不匹配,只有那麼繼續其他回退解決方案。

稍大一點的實現只有五碼點的偉大工程:

my @fp_ents = qw/deg divide mdash bdquo euro/; 
my %fingerprints = (
    "UTF-8" => ['c2b0','c3b7','e28094','e2809e','e282ac'], 
    "WINDOWS-1252" => ['b0','f7','97','84','80'], 
    "MAC"   => ['a1','d6','d1','e3','db'], 
    "MS-HEBR"  => ['b0','ba','97','84','80'], 
    "MAC-CYRILLIC" => ['a1','d6','d1','d7',''], 
    "MS-GREEK"  => ['b0','','97','84','80'], 
    "MAC-IS"  => ['a1','d6','d0','e3',''], 
    "MS-CYRL"  => ['b0','','97','84','88'], 
    "MS932"  => ['818b','8180','815c','',''], 
    "WINDOWS-31J" => ['818b','8180','815c','',''], 
    "WINDOWS-936" => ['a1e3','a1c2','a1aa','',''], 
    "MS_KANJI"  => ['818b','8180','','',''], 
    "ISO-8859-15" => ['b0','f7','','','a4'], 
    "ISO-8859-1" => ['b0','f7','','',''], 
    "CSIBM864"  => ['80','dd','','',''], 
); 
+0

我不得不看Facebook的登錄-HTML源在2012年5月,發現他們實際使用這種技術,哈哈! – GitaarLAB 2012-07-24 04:42:24