파일에 추가할 때 일부 문자가 변환됩니다.

파일에 추가할 때 일부 문자가 변환됩니다.

연결 문자열을 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++ 파일에 있습니다. 그런 다음 거기에서 데비안 서버의 명령줄에 복사하여 붙여넣었습니다. 이것을 실행하면 잘 작동합니다.

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 프로세스에 문제가 없음을 나타냅니다.

관련 정보