检测数据类型是ascii,转码之后再检测还是utf-8没生效
private function toUTF8($str){$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5','LATIN1'));if ($encode != 'UTF-8') {$str1 = mb_convert_encoding($str, 'UTF-8', $encode);dd(mb_detect_encoding($str1, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5','LATIN1')));}return $str;}
1、mb_detect_encoding — 检测字符的编码
说明
string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )
检测字符串 str 的编码。
2、mb_convert_encoding — 转换字符的编码
说明
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )
将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding
查了一些资料得知
没办法转 ascii是utf-8的子集 所以没有转的必要 就是你调用iconv去转 然后你mb_detect_encoding之后发现还是ascii。因为utf-8里面会把ascii字符集可以表示的,都用ascii表示。其它编码也是 。ascii编码是其它所有编码的子集
腾讯接口强制检验字符串为utf-8,这可能是腾讯的问题
腾讯上传媒体的接口获取的media_id是ascii码
可以尝试一下存数据库再获取media_id