不可见字符乱码导致json解析出错

最近在处理一个文本数据,需要通过api返回给前端,但是前端解析不了,后面发现时含有乱码,浏览器无法渲染(为不可见字符),正则匹配可以s匹配到,但是会误伤其他不可见字符,下面是几种不同的编辑器的渲染效果

vscode

clipboard.png

pages

clipboard.png

https://regexr.com/

clipboard.png

浏览器调试工具

clipboard.png

以下是原文,哪个知道如何匹配或者去除



我只是测试一下;


git init;



git add :


.
阅读 5.1k
2 个回答

直接用字符串替换就好了。
我的代码:(a前面有你那个错误的编码,当然浏览器应该是看不到的)
1 <?php
2 $a = '
a';
3 $json = json_encode($a);
4 var_dump($a);
5 var_dump($json);
6 var_dump(str_replace('
','', $a));
输出:
string(4) "
a"
string(9) ""u2028a""
string(1) "a"
可以看到那个奇怪的编码被json_encode成了u2028,其实那个奇怪的符号是占了3个字节的,可以看到第一个输出的string长度是4,替换后长度变成了1

可以尝试修改charset试试
前端也可以用replace对字符串替换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题