客户从其他网站上粘贴的字符串在网站后台提交后出现了“?”,但是其他网站上显示正常。
最开始查看以为是编码导致无法识别所以出现乱码的“?”,但是网站端显示都是UTF8编码,客户专题的只是一串汉字的,没有什么编码方式。
后来查看来源网站后看到显示没有问题,但是粘贴后只要保存到数据库中就会出现乱码。代码监控查看均显示正常,以为是数据库汉字编码问题,但是在数据库中监控了入库的sql脚本后看到已经存在乱码,就确定是字符串问题。
再次查看来源网站源码后看到汉字中间有段字符-“​”,查询后知道此为“零宽空格”。直接查看是看不到的,但是粘贴后存在,很是坑人。
找到原因后没有办法直接使用replace来替换,因为在字符串中不存在,需要用HttpUtility.UrlEncode转化后查找其中的“%e2%80%8b”来进行替换后再用HttpUtility.UrlDecode转化回来,这样就可以解决这个问题了。