--Strace跟踪解决expect乱码问题

----------------------------------2014/07/27

情景:需要在本机抓去另外一台远程数据库中的数据。

执行语句:./ersh.exp "export LANG=en_US.UTF-8;mysql -uroot  -S /tmp/mysql_3306.sock -ss  cdb2 -e \"set names utf8; select '外部-SNG-上海松江',pair_id,concat(tvs_vip,':',tvs_vport),instance_name,app_name from tb_mysql_pair where sync_status=1 and tvs_vport<>0 and status=3;\""  10.237.152.19

输出结果:

spawn ssh -p36000 10.237.152.19 -lroot -q
root's password:
Last login: Sun Jul :: from 10.181.225.39
Welcome to tlinux 1.2 64bit
Version 1.2
[root@TENCENT64 ~]# export LANG=en_US.UTF-;mysql -uroot -S /tmp/mysql_3306.sock -ss cdb2 -e "set names utf8; select '??-SNG-????',pair_id,concat(tvs_vip,':',tvs_vport),instance_name,app_name from tb_mysql_pair where sync_status=1 and tvs_vport<>0 and status=3;"
??-SNG-???? 10.236.158.100: 宅计划
[root@TENCENT64 ~]# sleep
exit
[root@TENCENT64 ~]# exit
logout

可见这句话在传过去的时候就是乱码了,不是返回时的乱码。

使用strace跟踪脚本的执行,发现如下编码相关语句:

open("/usr/lib/locale/en_US/LC_CTYPE", O_RDONLY) = 3

查看本机locale:

# locale
LANG=en_US.UTF-
LC_CTYPE=en_US
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

猜测是LC_CTYPE的设定问题引起此语句传输到其他机器时发生乱码,将LC_CTYPE设置成en_US.UTF-8,问题解决。

./ersh.exp "export LANG=en_US.UTF-8;mysql -uroot -S /tmp/mysql_3306.sock -ss cdb2 -e \"set names utf8; select '外部-SNG-上海松江',pair_id,concat(tvs_vip,':',tvs_vport),instance_name,app_name from tb_mysql_pair where sync_status=1 and tvs_vport<>0 and status=3;\"" 10.237.152.19
spawn ssh -p36000 10.237.152.19 -lroot -q
root's password:
Last login: Sun Jul :: from 10.181.225.39
Welcome to tlinux 1.2 64bit
Version 1.2
at(tvs_vip,':',tvs_vport),instance_name,app_name from tb_mysql_pair where sync_status= and tvs_vport<> and status=;" 外部-SNG-上海松江',pair_id,conc
外部-SNG-上海松江 10.236.158.100: 宅计划
[root@TENCENT64 ~]# sleep
exit
[root@TENCENT64 ~]# exit
logout

Strace跟踪解决expect乱码问题的更多相关文章

  1. [strace]跟踪进程的系统调用

    转自:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html 简介 strace常用来跟踪进程执行时的系统调用和所接收的信号 ...

  2. 增加UBUNTU字符集 解决中文乱码问题

    对GBK,GB2312,GB18030字符集的支持是UBUNTU中文乱码的罪魁祸首,其实我们可以在保持UTF-8为默认编码的条件下添加对这几个编码的支持,以解决中文乱码问题. 我想这个问题肯定有其他人 ...

  3. Sublime Text 2—解决中文乱码

    Sublime Text 2是一个非常棒的代码及文本编辑器,绿色小巧.速度飞快,跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等,有着许多其他编辑器没 ...

  4. zabbix解决中文乱码问题(没有测试成功)

    zabbix解决中文乱码问题 1.在windows系统中找一个自己喜欢的字体,这里我们用:msyh.ttf 2.将字体上传至/var/www/html/zabbix/fonts目录下 [root@za ...

  5. Spring项目解决Post乱码

    Java EE解决Post乱码:在web.xml中加入: <filter> <filter-name>encodingFilter</filter-name> &l ...

  6. 二招解决php乱码问题

    PHP的乱码问题已经说了N+1遍了,但还是经常看到新手不知道该如何解决php乱码问题,在此本人再重新给总结一下,希望对新手有点帮助 php网页出现乱码一般是在建立数据库时用的编码和php网页的编码不同 ...

  7. 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码

    利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏  ...

  8. 【原创】通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错 ...

  9. 解决 IntelliJ 乱码问题

    原文:解决 IntelliJ 乱码问题 汉字符在IntelliJ的控制台输出乱码.编译器在编译的时候,把汉字符编译成非UTF-8而引起乱码.我是在做Jsoup解析的时候出现的错误,其实归根结底确实编译 ...

随机推荐

  1. 2017CCPC中南地区赛 H题(最长路)

    题目地址:202.197.224.59/OnlineJudge2/ 来自湘潭大学OJ. 这里用到了一个树的直径(树中的最长边)的结论:当你找到一棵树的最长边后,这个树中所有点的最长边必定和这条边的两个 ...

  2. 使用python操作mysql数据库

    这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...

  3. redis内存管理

    Redis主要通过控制内存上线和回收策略来实现内存管理. 1. 设置内存上限 redis使用maxmemory参数限制最大可用内存.限制的目的主要有: 用户缓存场景,当超出内存上限maxmemory时 ...

  4. Java自学手记——接口

    抽象类 1.当类和对象被abstract修饰符修饰的时候,就变成抽象类或者抽象方法.抽象方法一定要在抽象类中,抽象类不能被创建对象,如果需要使用抽象类中的抽象方法,需要由子类重写抽象类中的方法,然后创 ...

  5. webpack1 新手入门教程

    本文github仓库地址: https://github.com/Rynxiao/webpack-tutorial ,里面包括了本教程的所有代码. [如果你觉得这篇文章写得不错,麻烦给本仓库一颗星:- ...

  6. Java基础语法<三> 输入输出

    1. 读取输入 Scanner in = new Scanner(System.in);   输入一行(包含空格) String str = in.nextLine()   读取一个单词(以空白符作为 ...

  7. 获取子物体数量---Transform.childCount

    如何判断一个物体下是否有子物体?getchild(0)!=null?显然不可取 那去获取拿到子物体数量?transform.GetChildCount();可以解决 但在新版本中已被弃用,可用tran ...

  8. springmvc(三) 参数绑定、

    前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...

  9. Cent-Linux腾讯课堂学习笔记

    RedHat yum系统下 防火墙 关闭防火墙方法 systemctl stop firewalld 检测防火墙状态 systemctl status firewalld 设置防火墙禁用开机启动 sy ...

  10. springmvc中的page

    1.1在page类上面要打个service的注解,这样page才能传过去1.2 在page中都是写private String XX;然后source实现传值的set,get的方法, package ...