Created
December 18, 2015 01:13
-
-
Save thomascsd/459d8457b728e76e0960 to your computer and use it in GitHub Desktop.
AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法將部分漢字編碼爲亂碼的解決方案
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
String abc = //....你的某些賦值行爲,這裏的字符串是要處理的內容 | |
............. | |
abc=Sanitizer.GetSafeHtmlFragment(abc);//被AntiXSS處理 | |
abc=hfjString_SanitizerCompatibleWithChineseCharacters(abc);//使之漢字不出現亂碼 | |
private static System.Collections.Generic.Dictionary<string, string> hbjDictionaryFX = new System.Collections.Generic.Dictionary<string, string>(); | |
object hbObject鎖 = new object(); | |
/// <summary> | |
/// 微軟的AntiXSS v4.0 讓部分漢字亂碼,這裏將亂碼部分漢字轉換回來 | |
/// </summary> | |
/// <param name="hc輸入值"></param> | |
/// <returns></returns> | |
public static String hfjString_SanitizerCompatibleWithChineseCharacters(String hcString_Para) | |
{ | |
string hbString_ReturnValue = hcString_Para; | |
hbString_ReturnValue = hbString_ReturnValue.Replace("\r\n", "");//避免出現<br>等標簽後被認爲加上\r\n的換行符,這會出現在多行textbox控件中,不需要的人請注釋這一行代碼 | |
if (hbString_ReturnValue.Contains("&#")) | |
{ | |
//Dictionary如果沒有內容就初始化內容 | |
if (hbjDictionaryFX.Keys.Count == 0) | |
{ | |
lock (hbjDictionaryFX) | |
{ | |
if (hbjDictionaryFX.Keys.Count == 0) | |
{ | |
hbjDictionaryFX.Clear();//防止多線程情況下的不安全情況,雙重檢查理論很完美,但是在多處理器,多線程下,會有平台漏洞,原因是亂序寫入這一cpu或系統功能的存在 | |
hbjDictionaryFX.Add("丼", "丼"); | |
hbjDictionaryFX.Add("似", "似"); | |
hbjDictionaryFX.Add("值", "值"); | |
hbjDictionaryFX.Add("儼", "儼"); | |
hbjDictionaryFX.Add("刼", "刼"); | |
hbjDictionaryFX.Add("匼", "匼"); | |
hbjDictionaryFX.Add("吼", "吼"); | |
hbjDictionaryFX.Add("唼", "唼"); | |
hbjDictionaryFX.Add("嘼", "嘼"); | |
hbjDictionaryFX.Add("圼", "圼"); | |
hbjDictionaryFX.Add("堼", "堼"); | |
hbjDictionaryFX.Add("尼", "尼"); | |
hbjDictionaryFX.Add("格", "格"); | |
hbjDictionaryFX.Add("夼", "夼"); | |
hbjDictionaryFX.Add("娼", "娼"); | |
hbjDictionaryFX.Add("嬼", "嬼"); | |
hbjDictionaryFX.Add("崼", "崼"); | |
hbjDictionaryFX.Add("帼", "帼"); | |
hbjDictionaryFX.Add("弼", "弼"); | |
hbjDictionaryFX.Add("怼", "怼"); | |
hbjDictionaryFX.Add("愼", "愼"); | |
hbjDictionaryFX.Add("戼", "戼"); | |
hbjDictionaryFX.Add("挼", "挼"); | |
hbjDictionaryFX.Add("搼", "搼"); | |
hbjDictionaryFX.Add("攼", "攼"); | |
hbjDictionaryFX.Add("昼", "晝"); | |
hbjDictionaryFX.Add("朼", "朼"); | |
hbjDictionaryFX.Add("椼", "椼"); | |
hbjDictionaryFX.Add("樼", "樼"); | |
hbjDictionaryFX.Add("欼", "欼"); | |
hbjDictionaryFX.Add("氼", "氼"); | |
hbjDictionaryFX.Add("洼", "窪"); | |
hbjDictionaryFX.Add("渼", "渼"); | |
hbjDictionaryFX.Add("漼", "漼"); | |
hbjDictionaryFX.Add("瀼", "瀼"); | |
hbjDictionaryFX.Add("焼", "焼"); | |
hbjDictionaryFX.Add("爼", "爼"); | |
hbjDictionaryFX.Add("猼", "猼"); | |
hbjDictionaryFX.Add("琼", "瓊"); | |
hbjDictionaryFX.Add("甼", "甼"); | |
hbjDictionaryFX.Add("瘼", "瘼"); | |
hbjDictionaryFX.Add("眼", "眼"); | |
hbjDictionaryFX.Add("砼", "砼"); | |
hbjDictionaryFX.Add("礼", "禮"); | |
hbjDictionaryFX.Add("稼", "稼"); | |
hbjDictionaryFX.Add("笼", "籠"); | |
hbjDictionaryFX.Add("簼", "簼"); | |
hbjDictionaryFX.Add("紼", "紼"); | |
hbjDictionaryFX.Add("縼", "縼"); | |
hbjDictionaryFX.Add("缼", "缼"); | |
hbjDictionaryFX.Add("耼", "耼"); | |
hbjDictionaryFX.Add("脼", "脼"); | |
hbjDictionaryFX.Add("(", "舼"); | |
hbjDictionaryFX.Add("茼", "茼"); | |
hbjDictionaryFX.Add("萼", "萼"); | |
hbjDictionaryFX.Add("蔼", "藹"); | |
hbjDictionaryFX.Add("贼", "賊"); | |
hbjDictionaryFX.Add("鬼", "鬼"); | |
} | |
} | |
} | |
//開始替換的遍曆 | |
foreach (string key in hbjDictionaryFX.Keys) | |
{ | |
if (hbString_ReturnValue.Contains(key)) | |
{ | |
hbString_ReturnValue = hbString_ReturnValue.Replace(key, hbjDictionaryFX[key]); | |
} | |
} | |
} | |
return hbString_ReturnValue; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment