如何可靠地剥离破坏代码的不可见字符

How to reliably strip invisible characters that break code?

本文关键字:字符 代码 何可 剥离      更新时间:2023-11-13

我正在尝试创建一个bookmarklet,但遇到了这个问题,我刚刚弄清楚:一个'u8203字符,Chrome在我的代码块中(粘贴到JS控制台时)毫无帮助地"告诉"我它是一个"无效字符ILLEGAL"。

幸运的是Safari告诉我它是'u8203

我正在Sublime Text 2编辑器中编辑代码,但不知何故,在其中内外复制(我也尝试过TextEdit)都无法将其删除。

有没有什么网站会去掉ASCII以外的所有字符?

当我尝试保存为ISO 8859时,"因为不支持的字符",它会将其保存回UTF-8。

是 啊这就是重点。摆脱我那些不受支持的邪恶角色。

我该怎么办?用十六进制编辑器编辑我的文件?

仅供参考,我实际上通过重新键入代码(顺便说一句,代码源自这个网站)解决了这个问题。

有没有什么网站可以去掉所有字符除了ASCII?

你可以使用这个网站

您可以使用以下代码重新创建网站:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title>- jsFiddle demo</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <link rel="stylesheet" type="text/css" href="/css/normalize.css">
        <link rel="stylesheet" type="text/css" href="/css/result-light.css">
        <style type="text/css">
            textarea {
                width: 800px;
                height: 480px;
                outline: none;
                font-family: Monaco, Consolas, monospace;
                border: 0;
                padding: 15px;
                color: hsl(0, 0%, 27%);
                background-color: #F6F6F6;
            }
        </style>
        <script type="text/javascript">
            //<![CDATA[ 
            $(function () {
                $("button").click(function () {
                    $("textarea").val(
                             $("textarea").val().replace(/[^'u0000-'u007E]/g, "")
                    );
                    $("textarea").focus()[0].select();
                });
            }); //]]>
        </script>
    </head>
    <body>
        <textarea></textarea>
        <button>Remove</button>
    </body>
</html>

您可以使用regex过滤0-127中的所有内容。例如在javascript:中

text.replace(/[^'x00-'x7F]/g, "")

x00=0,x7f=127

我能想到的最简单的方法是使用sed

sed -i 's/[^[:print:]]//g' your_script.js
//            ^^^^^ this can also be 'ascii'

或使用tr

tr -cd ''11'12'15'40-'176' < old_script.js > new_script.js

非技术性解决方案:将文本粘贴到Gmail中的新电子邮件中,然后单击Tx(清除格式菜单中的格式)。为我工作。