阿里云使用之ssh远程Ubuntu服务器的数据库乱码问题

如题,最近买了一台阿里的ecs服务器,但是我在ssh端插入数据库中的数据出现了乱码,于是开始了一番折腾之路。这个问题的原因是多种多样的,网上的解释往往只针对一种,所以我们需要弄清楚到底哪里出了问题!(我申请的是Ubuntu14.04 对应的配置文件路径会有差异,各位要根据自己的找)
画个图更清楚
这里写图片描述
我这里用的windows作为ssh的发起端,如果你用linux就要“因地制宜”,这里面任何一步出现编码不匹配将会出现乱码,所以要定位问题。但是我们首先确定的是,我们需要使用UTF-8作为开发会更适合中文。

mysql

mysql的乱码问题很好解决,在/etc/mysql/my.cnf中在对应位置加入

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8

之后重启

/etc/init.d/mysql restart

注意点:1. 对应位置写入配置,否则数据库无法启动
2.在你更改之后,之后的表将会按照utf-8的编码方式,但是之前的表还是默认的(这也就是我的出错位置!坑,建议在mysql中输入status查看)

remote server linux

linux的默认编码方式就是utf-8,只不过是en_utf-8,可能会导致中文显示不出,但是也不一定,所以你不确定这里可以先略过。改的话在/etc/default/locale中将默认的

LANG=”en_US.UTF-8”
LANGUAGE=”en_US:”
改为
LANG=”zh_CN.UTF-8”

之后在命令台输入locale,将会显示语言配置,

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

如果出现waring,也就是你没有该语言包,输入locale -a查看已有的语言包,下载即可

locale-gen zh_CN.UTF-8

此时远程的server也没问题了,可以试着创建中文的文件夹了

ssh

这东西也是坑啊,奉劝各位千万不要用 SSH Secure Shell Client这东西,推荐用putty或者xshell,楼主用的xshell,ssh服务默认使用的是远程的编码方式,也就是linux的utf-8,但是windows却是gbk某某,所以无法正常显示,使用SSH Secure Shell Client意味着你要改Linux的编码方式,改成和windows一样,会出现很多后续问题,这种不推荐。使用xshell可以设置ssh的编码方式,我们使用utf-8就可以正常显示了,默认的也是utf-8。
这里写图片描述

windows

这里也是就是gbk某某编码了,如果你使用linux作为本地,那就要重新思考了。切不可对着别人的建议乱改啊~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值