今天作项目时,导出为csv文件格式,而后其中有一列为微信昵称,结果转码后发现 整条数据都没有了。mysql
我用的第二种方法sql
$str = '□测试,测试!123□'; $charset = 'utf8'; $regex = '/ ( (?: [\x00-\x7F] # single-byte sequences 0xxxxxxx | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2 | [\xE1-\xEC][\x80-\xBF]{2} | \xED[\x80-\x9F][\x80-\xBF] | [\xEE-\xEF][\x80-\xBF]{2}'; if ( 'utf8mb4' === $charset ) { $regex .= ' | \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3 | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} '; } $regex .= '){1,40} # ...one or more times ) | . # anything else /x'; $str1 = preg_replace( $regex, '$1', $str ); var_dump($str1); //另外一种解决方法 $str1 = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str); var_dump($str1);
下方赠送CSV输出微信
header("Content-type:application/vnd.ms-excel;"); $file = $name.date("md", time()); header("Content-Disposition:filename=$file.csv");
原文: 最近作开发 发现,有些字符不能存进mysql,后来百度后,得出的结论是,mysql的utf8编码并非真正完整的utf8,在mysql新版本里选择utf8mb4这才是完整的utf8编码。 手机上有些图标好比: Emoji表情图标 在mysql里面须要选择utf8mb4才能存储和显示,网上大部分用mysql存Emoji表情相关的解决办法是 把mysql的字符集改成 utf8mb4,可是 最近有个需求就是截取掉对于mysql的utf8mb4的字符集。想了几天,忽然想在wordpress看代码,结果 果真找到,分享之。此方案为过滤掉 utf8mb4 的字符app
我这里的mysql原本就不支持utf8mb4的,因此就这样基本上看不到效果….wordpress