Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File <;0xEF、0xBB、0xBF>;文件中显示的字符。如何移除它们?_File_Unicode_Utf 8_Utf - Fatal编程技术网

File <;0xEF、0xBB、0xBF>;文件中显示的字符。如何移除它们?

File <;0xEF、0xBB、0xBF>;文件中显示的字符。如何移除它们?,file,unicode,utf-8,utf,File,Unicode,Utf 8,Utf,我正在压缩JavaScript文件,压缩器抱怨我的文件中有ï»字符 如何搜索并删除这些字符 perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js 如果您的文件中有其他utf-8,我假设该工具将崩溃,但是如果没有,也许这个解决方法可以帮助您。(未经测试…) 编辑:根据tchrist的评论,添加了-CSD选项。@tripleee的解决方案对我不起作用。但是将文件编码更改为ASCII,然后再次更改为UTF-8就成功了:-)您可以使用v

我正在压缩JavaScript文件,压缩器抱怨我的文件中有
ï»
字符

如何搜索并删除这些字符

perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
如果您的文件中有其他utf-8,我假设该工具将崩溃,但是如果没有,也许这个解决方法可以帮助您。(未经测试…)


编辑:根据tchrist的评论,添加了
-CSD
选项。

@tripleee的解决方案对我不起作用。但是将文件编码更改为ASCII,然后再次更改为UTF-8就成功了:-)

您可以使用vim轻松删除它们,以下是步骤:

1) 在终端中,使用vim打开文件:

vim file_name
2) 删除所有字符:

:set nobomb
3) 保存文件:

:wq

在windows中,您可以从中使用后端口重新编码实用程序。

感谢前面的回答,这里有一个sed(1)变体,以防万一:

sed '1s/^\xEF\xBB\xBF//'
使用tail可能更容易:

tail --bytes=+4 filename > new_filename

删除这些字符的另一种方法-使用Vim

vim-b文件名

现在,这些“隐藏”字符可见(
)并且可以删除。

中,您可以安装,然后在用户设置中自定义正则表达式

在这里,我将
\uFEFF
添加到
highlighter\u regex
属性的末尾

{
“highlighter_enabled”:正确,
“highlighter_regex”:“(\t++)|”(++\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t]+$”,
“荧光灯范围名称”:“无效”,
“荧光笔最大文件大小”:1048576,
“荧光灯延迟”:3000
}
要覆盖默认包设置,请将文件放在此处:

~/.config/sublime-text-3/Packages/User/highlighter.sublime-settings


在Unix/Linux上:

sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
sed的/\xEF\xBB\xBF/'outputfile
在MacOSX上

sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
sed$'s/\xEF\xBB\xBF/'outputfile

注意mac的sed后面的$

在Windows上


有一个增强版的sed。对于Windows,这是一个独立的.exe,用于从命令行运行。

保存不带代码签名的文件。

我使用了vimgrep

:vim "[\uFEFF]" *
也是正常的vim搜索命令

/[\uFEFF]

“文件”命令显示BOM表是否存在:

例如:“file myfile.xml”显示:“xml 1.0文档,UTF-8 Unicode(带BOM)文本,具有很长的行,带有CRLF行终止符”

dos2unix将删除BOM。

我建议使用“dos2unix”工具,请测试运行
dos2unix./thefile.js

如有必要,尝试对多个文件使用类似的方法:

for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done


我的问候。

那不是
,那是
那是UTF8文件的BOM表,所以你应该更改标题。您希望如何删除它们?由魔法仙女?通过命令行工具?一个接一个地编辑?记事本++可以将编码更改为UTF8,而无需BOM表。例如,在Google上搜索5秒钟“strip BOM utf8”,我在Linux上发现了这样一个问题:如果您告诉我们您使用什么javascript工具进行压缩,在什么平台上进行压缩,以及构建过程中使用了哪些其他工具,那么它可能会帮助您获得与您的问题具体相关的答案。UTF-8中的BOM绝对是crud。您需要找到该文件的制作人,并告诉他们将其剪切成@#%%@peterflynn:
U+FEFF
是用于BOM的Unicode代码点,但BOM本身就是该代码点的编码方式(UTF-8:
0xEF 0xBB 0xBF
,UTF-16LE:
0xFF 0xFE
,UTF-16BE:
0xFE 0xFE
,等等)。因此,所讨论的文件是UTF-8编码的,压缩程序在将它们解码为实际的Unicode码点时会检测到它。@xanatos不管它是什么,这就是它的表现方式,这就是人们使用搜索引擎可以轻松找到这个问题的方式。您需要使用
-CSD
开关运行,或者将
PERL\u UNICODE
envariable设置为
SD
,这样就可以了。Regexp可以删除行首的字符,替换行中的所有字符:“s/\x{fffe}//g”。在Mac OSX上,我必须改为:
PERL-CSD-pe's/^\x{feff}/'file.csv
,请注意从到的更改。@mpetti这不是一个BOM表,而是一个字节颠倒的BOM表。这可能发生在任何平台上,如果您将UTF-16转换为UTF-8并获得错误的字节顺序(即使BOM的目的是防止该错误!)@blong怎么办?如果你不能理解它,可以问一个单独的问题(但它可能会被标记为重复的;第一次谷歌点击)。其他来源建议将图1添加到pattern中,如“sed'1s/\xEF\xBB\xBF/'”,只匹配第一行。然而,对我来说,在MacOSX上,这两种方法都不起作用。这是有效的,对我来说是最好的解决方案。谢谢你,先生!我喜欢这个解决方案。易于实施且仍可扩展…:)@Marian有点晚了,但是你可以检查一下为什么它在mac上不起作用。将-i添加到sed以使用更改更新文件。这个解决方案对我很有效。它比所选答案更简单。ThanksI使用了这个伟大的解决方案,尽管我通常是emacs的支持者。vim FTW在文件生产者删除BOM后,该技术将失败。不可扩展…:)“注意mac的sed后面的$”-谢谢你,先生!Bash“C-style”字符串
$'\xEF\xBB\xBF/'
是Bash的一种功能,特别是Mac或OSX功能。通过这种构造,Bash将把转义序列解析为实际字节,然后将命令行传递给sed。取决于你的
sed
变体,这可能有效,也可能无效(尽管我确信OSX用户知道它应该为他们开箱即用是很有用的)。也许sed-I的/../…/“我喜欢你的答案-
bomstrip
在我的mac电脑上不容易获得-所以花点时间给你一个简单的版本:
find-泰