Unix 替换Â;文件中有空格
在我的文件中,不知何故,添加了。我不确定它是什么,以及它是如何被添加的Unix 替换Â;文件中有空格,unix,sed,character-encoding,Unix,Sed,Character Encoding,在我的文件中,不知何故,添加了。我不确定它是什么,以及它是如何被添加的 12345AÂ 210Â CBCDEM 我想从文件中删除此字符。我尝试使用基本sed命令将其删除,但未成功 sed -i -e 's/\Â//g' 我还读到,dos2unix将完成这项工作,但不幸的是,这项工作也不起作用。假设它是十六进制字符,我还尝试使用hex-valuesed-I的/\xc2//g'删除它,但这也不起作用 我真的很想了解这个角色是什么,以及它是如何被添加的。此外,是否有可能删除文件中的所有此类字符
12345AÂ 210Â CBCDEM
我想从文件中删除此字符。我尝试使用基本sed命令将其删除,但未成功
sed -i -e 's/\Â//g'
我还读到,dos2unix
将完成这项工作,但不幸的是,这项工作也不起作用。假设它是十六进制字符,我还尝试使用hex-valuesed-I的/\xc2//g'
删除它,但这也不起作用
我真的很想了解这个角色是什么,以及它是如何被添加的。此外,是否有可能删除文件中的所有此类字符
正在添加编码详细信息:——
操作系统详细信息:——
注意。似乎在写入文件的程序(在的某些部分)和读取文件的程序(假设是)之间存在编码不匹配。这是一个教科书上的用例。事实上,手册页中的示例几乎完全适用于您的案例:
iconv -f iso-8859-1 -t utf-8 test.txt
iconv
是我见过的几乎所有Unix发行版上的一个程序,因此您在这里应该没有任何问题
基于你似乎以英语为主要语言写作的事实,你可能正在寻找,这显然是相当流行的
如果这不能解决您的问题,您可能需要为数据库的输出找到正确的编码。你能行
iconv -l
要获取可用于iconv
的编码列表,请使用适合您的编码。请记住,文件
的输出不是绝对的。在许多情况下,无法区分纯ASCII和UTF-8。如果我没有弄错的话,文件
使用基于文件中字符代码频率的启发式方法来确定编码。如果样本太小和/或模棱两可,很容易出错
如果要保存iconv
的输出,并且您的版本支持-o
标志,可以使用它。否则,请使用重定向,但要小心:
TMP=$(mktemp)
iconv -f iso-8859-1 -t utf-8 test.txt > "$TMP" && mv "$TMP" test.txt
似乎在写入文件的程序(在的某些部分)和读取文件的程序(假设是)之间存在编码不匹配。这是一个教科书上的用例。事实上,手册页中的示例几乎完全适用于您的案例:
iconv -f iso-8859-1 -t utf-8 test.txt
iconv
是我见过的几乎所有Unix发行版上的一个程序,因此您在这里应该没有任何问题
基于你似乎以英语为主要语言写作的事实,你可能正在寻找,这显然是相当流行的
如果这不能解决您的问题,您可能需要为数据库的输出找到正确的编码。你能行
iconv -l
要获取可用于iconv
的编码列表,请使用适合您的编码。请记住,文件
的输出不是绝对的。在许多情况下,无法区分纯ASCII和UTF-8。如果我没有弄错的话,文件
使用基于文件中字符代码频率的启发式方法来确定编码。如果样本太小和/或模棱两可,很容易出错
如果要保存iconv
的输出,并且您的版本支持-o
标志,可以使用它。否则,请使用重定向,但要小心:
TMP=$(mktemp)
iconv -f iso-8859-1 -t utf-8 test.txt > "$TMP" && mv "$TMP" test.txt
文件是如何创建的?该文件是作为导出从Mongo创建的。Mongo没有这样的角色。当然。你能检查一下你的系统使用的编码和数据库使用的编码吗?这应该很有用,我想试着运行
文件,并将结果包含在你的问题中。类似于od-c | head
的东西也可能有用。我们需要更多信息。文件是如何创建的?该文件是作为从Mongo导出创建的。Mongo没有这样的角色。当然。你能检查一下你的系统使用的编码和数据库使用的编码吗?这应该很有用,我想试着运行文件,并将结果包含在你的问题中。类似于od-c | head
的东西也可能有用。我们需要更多信息。它不断给出错误iconv:“ISO-8859”的转换不正确supported@user2854333. 请尝试iso8859
。你到底在用什么操作系统?请将其编辑到问题中。iso8859也不起作用。我使用了iconv-l来获取支持的转换格式,但似乎iso-8859不存在。我们需要iso-8859-1或类似的格式。我尝试过,但字符仍然存在,尽管编码已更改。@user2854333。“不幸的是,它没有帮助”不是一个很有帮助的评论。我在关于问题本身的评论中多次要求提供补充信息,但你完全忽视了这一点。如果没有这些信息,我真的帮不了你,所以在你提供之前,我已经添加了我的投票结果。它不断给出错误iconv:“ISO-8859”的转换不正确supported@user2854333. 请尝试iso8859
。你到底在用什么操作系统?请将其编辑到问题中。iso8859也不起作用。我使用了iconv-l来获取支持的转换格式,但似乎iso-8859不存在。我们需要iso-8859-1或类似的格式。我尝试过,但字符仍然存在,尽管编码已更改。@user2854333。“不幸的是,它没有帮助”不是一个很有帮助的评论。我在关于问题本身的评论中多次要求提供补充信息,但你完全忽视了这一点。如果没有这些信息,我真的帮不了你,所以在你提供这些信息之前,我已经投了我的赞成票。