有什么好的办法吗?

直接把utf8的字段改成 utf8mb4 会导致别的错误:
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation

Comments

leetom created an issue.

leetom’s picture

暂时用了这种办法解决:csna_callback 中插入用户前移除用户名中不支持的字符(4字节utf-8字符)

      $name = $data['name'];
      
      $data['name'] = $name = preg_replace('/[\xF0-\xF7][\x80-\xBF]{3}/', '', $name);	//删除4字节utf8字符
      if(mb_strlen($name) <= 2){
		$str5 = substr( uniqid(), -5);  //移除之后用户名太短的情况,直接用一个随即串作为用户名。
		$name = date('ymd') . $str5;
      }