Malformed UTF8 characters, possibly incorrectly encoded

 

突然正常的项目报这个错误;

因为最近在迁移新的服务器堡垒机UTF-8编码有些问题,一直在调整服务器编码问题;以为是服务器配置造成的;

排查了半天本机一样有问题,本地最近又没有调整过 系统编码应该不会出现此问题;

 

报错界面:

[0] InvalidArgumentException in Json.php line 39

Malformed UTF-8 characters, possibly incorrectly encoded

  1. * @throws \Exception
  2.  
  3. */
  4.  
  5. protected function output($data)
  6.  
  7. {
  8.  
  9. try {
  10.  
  11. // 返回JSON数据格式到客户端 包含状态信息
  12.  
  13. $data = json_encode($data, $this->options['json_encode_param']);
  14.  
  15.  
  16.  
  17. if (false === $data) {
  18.  
  19. throw new \InvalidArgumentException(json_last_error_msg());
  20.  
  21. }
  22.  
  23.  
  24.  
  25. return $data;
  26.  
  27. } catch (\Exception $e) {
  28.  
  29. if ($e->getPrevious()) {
  30.  
  31. throw $e->getPrevious();
  32.  
  33. }
  34.  
  35. throw $e;
  36.  
  37. }
  38.  

 

 

最终排查发现不是系统的问题:

是碰巧的一个字段在使用时候:中文截取的问题;

原因:substr mb_substr 的使用问题;

错误的截取中文造成代码异常不能 正常转换;一定要注意!!!

修改前代码:

$val['linked_teacher'] = nameCryptic(substr($val['linked_teacher'],1,4));

修改后代码:

$val['linked_teacher'] = nameCryptic(mb_substr($val['linked_teacher'],1,4));

 

唉,这个bug 大意了;

--------------------------------------------------------------------

一些其他的答案:

https://stackoverflow.com/questions/31115982/malformed-utf-8-characters-possibly-incorrectly-encoded-in-laravel

https://stackoverflow.com/questions/63399718/invalidargumentexception-malformed-utf-8-characters-possibly-incorrectly-encod

对资源进行转码:

$json = html_entity_decode($source);

$data = json_decode($json,true);

 

文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。

__________________________________________________________________________________

若有帮助到您,欢迎点击推荐,您的支持是对我坚持最好的肯定(*^_^*)

原文地址:https://www.cnblogs.com/lovebing/p/15674914.html