AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案

以下代码为asp.net环境下,c#语言编写的解决方案.
数据用Dictionary,而不是用其他的例如ArrayList存放,是为了速度.
将Dictionary替换为HashTable也是一个不错的解决方案
调用举例

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;
    }

AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案的更多相关文章

  1. 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib的解决方法

    本人菜鸟一个,在编码过程中遇到的问题记录下以备忘,高手别笑.最近在做一个项目,公司的VS版本是2010,家里的VS版本是2012.把公司的项目用2012打开后再用2010打开就出现 未能解析目标框架“ ...

  2. AFNetworking 3.0中调用[AFHTTPSessionManager manager]方法导致内存泄漏的解决办法

    在使用AFNetworking3.0框架,使用Instruments检查Leaks时,检测到1000多个内存泄漏的地方,定位到 [AFHTTPSessionManager manager] 语句中,几 ...

  3. django 2.0 中URL的include方法使用分析

    一.问题出现: 在使用Django2.0,配置全局URL时,希望指向某个APP的URL,配置如下: from django.contrib import admin from django.conf. ...

  4. vue3.0中的双向数据绑定方法

    熟悉vue的人都知道在vue2.x之前都是使用object.defineProperty来实现双向数据绑定的 而在vue3.0中这个方法被取代了 1. 为什么要替换Object.definePrope ...

  5. yii2.0中url重写实现方法

    在yii框架里有前台和后台页面,举例前台url重写. 控制器与路由 控制器以Controller作为后缀,继承自yii\web\Controller; 动作以action作为前缀,public访问修饰 ...

  6. kali2.0中dradis的使用方法

    启动脚本位于:/usr/lib/dradis下,再该目录下有一个start.sh文件,执行后,可以在浏览器中输入https://localhost:3004即可打开dradis的web接口 切记前面h ...

  7. ASP.NET MVC 4.0中选择Windows 验证默认出错拒绝访问的原因和解决方案

    在VS 2012或者2013 中,根据模板创建一个ASP.NET MVC 4.0的应用程序,选择下面的模板 然后选择Intranet Application 不对源代码做任何修改,直接按下F5调试,会 ...

  8. 在 Flash ActionScript 2.0 中调用 Javascript 方法

    本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript ...

  9. 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!

    去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...

随机推荐

  1. h5网页中使用打电话功能

    如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ...

  2. CSS ::before 和 ::after 伪元素另类用法

    原文地址:http://justcoding.iteye.com/blog/2032627 CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是 ...

  3. Markdown工具之---Typora

    在项目集成阶段中,接口文档是不可避免的,以往的我使用word编辑器编写接口文档,虽然word使用不是很熟练,但是只要在网上下载模板或者自己花时间搞定一个文档格式 基本能一劳永逸.但是还是会有很多问题存 ...

  4. git无法定位程序输入点libiconv

    使用git clone时,报以下错误: 解决方案: 将git\bin\下的libiconv-2.dll复制到\git\libexec\git-core\下即可

  5. The first DP!

    P3399 丝绸之路 题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚. ...

  6. 淘宝网触屏版 - 学习笔记(1 - 关于meta)

    注:本文是学习笔记,并不是教程,所以会有很多我不理解或猜测的问题,也会有不尽详实之处,望见谅. <meta charset="utf-8"> <meta cont ...

  7. 切换npm源

    直接切换源: npm install --registry=https://registry.npm.taobao.org 另: (仅用于学习参考使用) 参考: http://www.xuebuyua ...

  8. java Collections.sort()实现List排序自定义方法

    方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...

  9. Pod(转)

    一.CocoaPods的安装 (1)使用淘宝的Ruby镜像替换官方的ruby源,在终端输入命令 $ gem sources --remove https://rubygems.org/ $ gem s ...

  10. Evolutionary Computing: 5. Evolutionary Strategies(1)

    resource: Evolutionary computing, A.E.Eiben Outline What is Evolution Strategies Introductory Exampl ...