这很奇怪,使用 Windows 的朋友发送的 .txt 文档,我相信我发现了一个奇怪的空格字符。
如果我运行,cat file
该角色将显示为
另外,我正在运行if [[ " " = " " ]] ; then echo yes ; fi
,但它没有给我成功代码。(该角色在 Stack Exchange 上一旦失去其属性,因此运行它会给你一个成功代码)
编辑 该文件采用 iso-8859-1 编码,而不是 utf-8 编码。
使用 Serg 的解决方案,我能够将其转换为 utf-8
答案1
由于文件编码已被报告为iso-8859-1
,您可以使用iconv -f old-encoding -t new-encoding inputfile > outputfile
更多信息:http://www.shellhacks.com/en/HowTo-Determine-and-Change-File-Character-Encoding
答案2
您可以使用dos2unix
。来自man dos2unix
:
dos2unix - DOS/Mac to Unix and vice versa text file format converter
例如你可以这样做:
dos2unix -n file.in file.out
现在file.out
将采用 UNIX 格式。dos2unix
可以将 Windows 行尾和编码转换为 UNIX 格式,以便您可以在两种情况下使用它。如果未安装,您可以通过以下方式安装:
sudo apt-get install dos2unix
答案3
我的猜测是行尾。
Windows 使用\r\n
而 *UNIX 使用\n
。
您看到的可能只是\r
字符,因为它们对于 *UNIX 来说没有任何意义。
在 Windows 上打开带有结尾的文本文件没有问题\n
,因为 Windows 会自动将其转换为\r\n
(仅在文本模式下),而 *UNIX 没有这样的功能。
答案4
您看到的字符听起来像不间断空格。它是 iso-8859-1 和 unicode 中的字符编号 160。在某些键盘布局中,可以使用 输入altspace。如果您使用 查看文件,cat -e
它将显示如下M-
示例:
$ printf '\xa0\n' | cat -e
M- $