Linux问题:在A和B服务器中执行:echo $LANG,结果都是:ja_JP.UTF-8。(ja和JP代表日文和日本)
在B服务器中,有一个文件b.sh,文件编码是Shift-jis(这是日文的编码)。现要模拟错误,将b.sh改成b002.sh。然后,
在A服务器中,有一个文件a.sh,文件编码是UTF-8,此文件的内容如下:
代码块1
ssh ${REMOTE_USER}@${REMOTE_HOST} << remotessh
cd ${DB_SHELL_PATH}
./b.sh ---这里在调用执行B服务的b.sh文件,错误就出在这行,因为此文件不存在。
代码块3
A服务器中用的客户端软件是Tera Term,分下面情况:
情况1:“漢字-受信”的编码设置为Shift-jis时,代码块1和代码块3执行时就不会有乱码,但这时“./b.sh”这行代码执行时会产生乱码,报的错误如下:
-bash: line 12 ./b.sh: XXXXXXXXX(XXX这里是乱码。)
情况2:但如果“漢字-受信”的编码设置为UTF-8,这样在执行a.shell时,代码块1和代码块3执行时就会有乱码,而“./b.sh”这行代码执行时就不会有乱码,报的错误是日文,翻译出来的意思是:“没有那样的文件或目录,”,如果是用英文报出来这个错误,一定就是:“No such file or directory.”,这应当是Linux系统报出来的错误。
目标:a和b文件的编码不能修改,TeraTerm中“漢字-受信”的编码必须得设置为Shift-jis,然后使“./b.sh”这行代码执行时,也不会有乱码就行。
我个人认为:Shift-jis(这是日文的编码)其实和GB2312是同样的道理。非常感谢大家!