今天突然接到产品经理电话,说短信发送错误,发送短信接口已经运行三个多月了都是很正常,想当然的就认为是提供商那边有问题;就去找提供商了,搞了半天最终发现还是自己代码有问题。
没有办法,自己挖的坑自己得填啊,查代码看看哪里有问题,跟踪代码提示上图问题,很是迷茫啊,查官方文档吧,
iconv
(PHP 4 >= 4.0.5, PHP 5, PHP 7)
iconv — 字符串按要求的字符编码来转换
说明
string iconv ( string $in_charset , string $out_charset , string $str )
将字符串 str 从 in_charset 转换编码到 out_charset。
参数
in_charset:输入的字符集。
out_charset:输出的字符集。
如果你在 out_charset 后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,str 从第一个无效字符开始截断并导致一个 E_NOTICE。
str:要转换的字符串。
返回值:返回转换后的字符串, 或者在失败时返回 FALSE。
在加上百度
http://www.tonitech.com/822.html
http://www.aikaiyuan.com/8418.html
即可确定问题方向了
iconv()函数转码的时候某个字符不能被目标字符所表示
这时候就需要iconv()函数第二个参数的//TRANSLIT、//IGNORE两个值了
之前代码:
iconv("utf-8", "gbk", $this->content)
修改之后代码:
iconv("utf-8", "gbk//TRANSLIT//IGNORE", $this->content)
重新提交短信内容
您在2015-11-07 15:44添加的短信提醒内容,已于2015-11-07 15:45发送完成\';成功发送2人,发送失败0人。
ok问题解决 交差