两个视觉上相同的文本位如何与剪贴板不同?

问题描述 投票:0回答:4

我有一个sublime文档有两个相同的文件路径(2个单独的行),如果我复制一个我的应用程序功能工作,如果我复制另一个它没有。

当我选择一行并执行cmd + d时,您会希望按照正常功能突出显示两行。它不是。在VC代码中也是如此,因此这两行有所不同。

我试过myData.toString()我试过JSON.parse但它没有顺利我想不出来

这里有违规的线路。

/Volumes/Macintosh HD/Archive/Work/AE_Scripting/⁨Resources⁩/⁨CEP-Resources-master⁩/⁨CEP_8.x⁩/⁨Documentation

-Works
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation

在上传此帖子的示例文件后,我现在有了一些新信息,您可以在此处看到

http://gravitystaging.com/uploadarea/test/examplefile.txt

这两行现在都显示为

/Volumes/Macintosh HD/Archive/Work/AE_Scripting/â¨Resourcesâ©/â¨CEP-Resources-masterâ©/â¨CEP_8.xâ©/â¨Documentation

-Works
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation

虽然在任何编辑器中,它们看起来都很正常那么如何处理这个字符串来删除它。

javascript string text sublimetext2 clipboard
4个回答
1
投票

您的第一个字符串中包含一些Unicode双向标记字符:U + 2068和U + 2069。您可以使用Python中的ord函数来检查这些:

>>> [ord(x) for x in '/Volumes/Macintosh HD/Archive/Work/AE_Scripting/⁨Resources⁩/⁨CEP-Resources-master⁩/⁨CEP_8.x⁩/⁨Documentation']
[47, 86, 111, 108, 117, 109, 101, 115, 47, 77, 97, 99, 105, 110, 116, 111, 115, 104, 32, 72, 68, 47, 65, 114, 99, 104, 105, 118, 101, 47, 87, 111, 114, 107, 47, 65, 69, 95, 83, 99, 114, 105, 112, 116, 105, 110, 103, 47, 8296, 82, 101, 115, 111, 117, 114, 99, 101, 115, 8297, 47, 8296, 67, 69, 80, 45, 82, 101, 115, 111, 117, 114, 99, 101, 115, 45, 109, 97, 115, 116, 101, 114, 8297, 47, 8296, 67, 69, 80, 95, 56, 46, 120, 8297, 47, 8296, 68, 111, 99, 117, 109, 101, 110, 116, 97, 116, 105, 111, 110]

看到那些8000的东西?这些是你不想要的Unicode标记。

如果您只想要纯ASCII,那么我将如何在Python中执行此操作:

''.join(c for c in my_string if ord(c) < 256)

这剥离了高于U + 00FF的任何东西。


0
投票

我建议看一下使用正则表达式删除所有非字母数字字符。

https://stackoverflow.com/a/7225734/9899022

由于粘贴的文本和其他字符已经是字符串格式,因此尝试将其解析为JSON或调用.toString()不会改变有关该变量的任何内容。


0
投票

如果您在(MacOS)bash终端中使用cat文件,您将获得相同的行。运行encguess examplefile.txt会告诉你格式是UTF-8。使用UTF-8编码在SublimeText 3中打开它也会显示相同的行。

但是,如果您切换到Western(Windows 1252)编码,那么您将获得与示例中完全相同的错误符号。所以我猜你使用错误的编码来查看你的文件。

如何在SublimeText 3中切换编码:File =>使用Encoding重新打开=>选择您的编码(UTF-8)

编辑 如果要从给定字符串中删除错误的字符,可以使用String.replace()

str = "/Volumes/Macintosh HD/Archive/Work/AE_Scripting/â¨Resourcesâ©/â¨CEP-Resources-masterâ©/â¨CEP_8.xâ©/â¨Documentation"

console.log("Before: ", str);

str = str.replace(/(â©)|(â¨)/g, "");
console.log("After: ", str);

0
投票

我设法通过以下线程解决了这个问题

How to remove invalid UTF-8 characters from a JavaScript string?

function cleanString(input) {
    var output = "";
    for (var i=0; i<input.length; i++) {
        if (input.charCodeAt(i) <= 127) {
            output += input.charAt(i);
        }
    }
    return output;
}

它是我早期看到的东西,但一定是错误地使用它。

© www.soinside.com 2019 - 2024. All rights reserved.