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

转载于:https://www.cnblogs.com/flysnow-z/p/4683035.html

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

  1. php中的setinc,thinkPHP5.0中的setInc,setDec方法

    ---恢复内容开始--- thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 1 $User ...

  2. 冰蝎v4.0.6下载及使用方法

    冰蝎v4.0.6下载地址:https://github.com/rebeyond/Behinder/releases/tag/Behinder_v4.0.6 下载完之后打开Behinder.jar 1 ...

  3. emq数据储存到mysql,规则引擎示例 - 保存数据到 MySQL - 《EMQ X Enterprise v4.0 中文文档》 - 书栈网 · BookStack...

    保存数据到 MySQL 搭建 MySQL 数据库,并设置用户名密码为 root/public,以 MacOS X 为例:$ brew install mysql $ brew services sta ...

  4. java中的getparameter_Java中request.getParameter(realName)获取参数值为中文时乱码的解决方案...

    说明:貌似这个问题绝大多数人都遇到过,开发的时候好好的,部署之后就出问题了!原因是因为HTTP请求传输时将URL以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字 ...

  5. spring boot中支付宝生活号事件订阅,中文参数乱码问题解决方案

    项目使用的是spring boot 2.0.0 RELEASE版本 出发点: 在支付宝生活号后台设置好支付宝默认应用网关之后,只要有关注.取关等等事件之后都会发推送过来. 看样子默认是GBK编码,得验 ...

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

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

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

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

  8. C# 7.0 新特性:本地方法

    C# 7.0:本地方法 VS 2017 的 C# 7.0 中引入了本地方法,本地方法是一种语法糖,允许我们在方法内定义本地方法.更加类似于函数式语言,但是,本质上还是基于面向对象实现的. 1. 本地方 ...

  9. C#3.0中的新特性

    转:http://baike.baidu.com/view/406857.htm 第一个特性:隐式类型化本地变量 这个特性非常简单,有些JavaScript的影子,我们可以统一使用使用"va ...

最新文章

  1. 每日一皮:测试都ok啊,咋一上线就乱了呢...
  2. 京东 你访问的页面需要验证证书_中级会计“新”证书来了
  3. 统计学怎么求加权指数_我要自学生信之统计学:统计学概述(一)
  4. python常考题_Python语言基础考察点:python语言基础常见考题(一)
  5. 机器学习003-Kernel
  6. 飞畅科技-千兆/百兆/核心/PoE/光纤交换机选型指南
  7. LeetCode 63. 不同路径 II(DP)
  8. mount --bind的用处
  9. 《软件工程》第四次作业--目标软件(必应词典)
  10. VMWare安装Ubuntu 12.04开启虚拟机的Unity Mode模式
  11. 小黄鸭c语言程序代码,新年的小黄鸭 - 题目 - Universal Online Judge
  12. Spring @AutoWired实现原理
  13. mysql 重建注册_mysql 重建帐号
  14. Python打码API(学习使用)
  15. android 矢量粒子动画,Android碎裂的粒子效果
  16. 微信小程序实践——实验3视频播放小程序
  17. 二叉搜索树的经典应用面试题(keykey-value模式)
  18. 【跨平台编程工具】XERO CODER 4.2.8.0 For x86 Cracked By PiaoYun/P.Y.G 优雅破解
  19. 付利赚团队分享互联网发展过程那些疯狂的时代
  20. 6nm工艺的微观神话,于毫厘间雕刻5G的“神笔马良”

热门文章

  1. leetcode:Excel Sheet Column Number
  2. 业务、架构、技术,我们应该关注什么
  3. python并行计算进程池通信_Python使用进程池管理进程和进程间通信
  4. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
  5. 什么高大填空四个字动人_雅思考试的技巧?雅思听力part4填空做题技巧分享
  6. excel甘特图模板_最简单的Excel甘特图制作方法,只用一条公式,项目进度一目了然...
  7. java装饰者模式讲解视频教程_java装饰者模式介绍(图文教程)
  8. SpringMVC入门(一)之HelloWorld(IDEA版)
  9. PostgreSQL查看系统视图的源码
  10. 004redis与python的交互