mysql 字符编码引发的问题分析

发布时间:2020-02-22编辑:脚本学堂
本文介绍下,在使用mysql数据库时,由到字符的编码引发的一些问题,希望遇到类似问题的朋友,可以参考借鉴下。

本节内容:
mysql 字符编码

在维护一个短信类的系统,短信内容由后台脚本根据配置文件(时间,短信内容)定期修改。
有客户投诉说收到的短信全是???号之类。

初步判断,可以胆服务器编码或是配置文件编码的问题。
查了半天后面发现是mysql 客户端的编码问题。

数据库编码是latin1,脚本mysql客户端编码原来也是laitn。 数据库与脚本不在同一台服务器上。

关健:前段时间,在脚本那台服务器上重新安装了一个mysql,并且编码是utf8。

早上有二个任务符合条件,对短信内容进行了update操作。结果内容全是?????
 

复制代码 代码示例:
echo "开始更改$single_code任务的内容,请稍候"
mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
update $dbtables set sms_content="$2" where sms_code=$1

update前增加了一个:set names latin1;
再运行脚本短信内容恢复正常。
 

复制代码 代码示例:
echo "开始更改$single_code任务的内容,请稍候"
mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
set names latin1;
update $dbtables set sms_content="$2" where sms_code=$1

说明:
原先脚本中没有加set names latin1 这层保险。