最近某个脚本的执行经常导致编码问题。
脚本从远端mysql数据库获取影片中文名,然后再导入本机的mysql中。发现由crontab自动执行的时候获取的影片名称都是乱码,但手动执行脚本却正常输出。几天都是这个问题。今天突然想起以前也有类似问题,在终端执行“echo $LANG",然后在脚本中加”export LANG=xx(之前的输出结果)“,问题解决。
具体原因不知,个人猜测本地LANG是人为设定,系统LANG应该是不同的一个值。而crond在执行是应该使用的是系统值,而不是当前用户设定的值。
同样的原因,之前发现shell脚本在执行”sort“的时候输出结果也受LANG的影响。以后写shell脚本的时候必须注意这个问题了。