添加到文件时某些字符会被转换

添加到文件时某些字符会被转换

我正在编写一个脚本,其中包括将连接字符串传递给 socat。

当我将其粘贴到命令行中时,效果很好,但是当我打开文件并将其粘贴到那里(pico filename.sh)时,字符将转换为其他内容,并且连接字符串失败。

有问题的代码是:

conTest=$(echo -e -n "@\0\0'{abcde\0fghij\0Ç\x01Ó|" | socat STDIO tcp4:127.0.0.1:12345)

有问题的角色是:

0Ç\x01Ó

其转换为:

0�\x01�

有没有办法阻止他们转变?

我正在使用 Windows 7 PC 上的 putty (ssh) 连接到这台计算机 (Debian)。

我的初始文本位于我的 Windows PC 上的 notepad++ 文件中。然后,我将其从那里复制/粘贴到我的 Debian 服务器上的命令行中。当我运行这个时,它工作正常。

如果我使用 pico 打开文件pico test1.sh并复制/粘贴文本,那么它似乎没问题。但一旦我尝试保存它(ctrl-O),字符就会改变。

如果我然后运行file test1.sh它会说test1.sh: Bourne-Again shell script, ISO-8859 text executable.

如果我运行iconv -f ASCII -t UTF-8 test1.sh我就会得到illegal input sequence at position 263哪个是Ç角色。

如果我尝试使用 nano,nano test2.sh则复制/粘贴将不起作用,并且我会在问题字符后得到其他字符。再次,当我尝试保存它时,同样的情况发生(字符发生变化)。

接下来我尝试使用 sftp 复制文件。我将其复制为 test3.sh,然后在服务器上使用 vi 打开它vi test3.sh。这表明了同样的问题问题字符被替换。

然而,跑步file test3.sh给了我test3.sh: Bourne-Again shell script, UTF-8 Unicode text executable

我通过sftp将文件复制回来,并在我的windows电脑上打开它,字符都很好,表明sftp进程没有问题。

相关内容