【问题标题】:Removing BOM characters from AJAX-posted string从 AJAX-post 字符串中删除 BOM 字符
【发布时间】:2012-10-23 06:52:18
【问题描述】:

我的内容包含多个 BOM (EF BB BF) 字符,我想删除它们。字符在字符串的中间,我想简单地将它们全部删除。

数据来自我从 CKEditor 实例中获取的 JavaScript 源。然后我发布变量并将其作为字符串读取到我的后端,BOMS 就在那里。目前,它们按原样保留,但是当字符被解释并开始显示中间内容时,这会导致后处理出错。我怀疑它们来自复制粘贴到我的 CKEditor 中的东西。

我可以逐个字符地遍历字符串,但我不知道如何与 BOM 进行比较。是否可以比较字符串字节的十六进制值并比较三个字节序列?

【问题讨论】:

    标签: c# .net byte-order-mark


    【解决方案1】:

    utf-8 BOM 字节被转换为\ufeff。 Unicode 字符“零宽度不间断空格”,看不到,听不到。过滤掉它们:

       var good = bad.Replace("\ufeff", "");
    

    【讨论】:

    • 大成功!但是有一个问题,这是否会通过删除其他被翻译成相同 unicode 字符的字节而导致问题?我怀疑如果他们被删除我会错过任何人,但还有其他重要或值得一提的角色吗?
    • 你看不见,也听不见。
    • 要替换字符串中的任何出现,使用: const goodStr = badStr.split('\ufeff').join('');
    【解决方案2】:

    尝试以下方法:

    CleanString = DirtyString.Replace("\u00EF\u00BB\u00BF", null);
    

    【讨论】:

    • 我测试这个的方法是先做string s2 = s.Replace(...)然后Debug.WriteLine(s2);。然后我将输出窗口中的输出复制粘贴到 Notepad++ 并切换到查看 HEX:我仍然看到 BOM。我试错了吗?
    • 这就是它对我的工作方式。也许你觉得this 有帮助。
    猜你喜欢
    • 2015-01-06
    • 2021-10-04
    • 2017-07-15
    • 2016-07-26
    • 2013-09-18
    • 2011-11-22
    相关资源
    最近更新 更多