根据网上的视频和配置做了,可是数据库中文调出来还是出现unicode代码.
如题,数据库已经设置为utf8, 网页也是utf8编码,可是数据库中文调出来还是 /u 形式的编码。
网上看了很多,貌似没有对此专门的回复,一般的回复是利用 json_encode()的第二个参数,设为 JSON_UNESCAPED_UNICODE,实现输出正常的utf8,确实可以。
但是不可能每次输出都这样做,太麻烦了吧,网上教学视频里也是能够直接输出的,是我哪里配置没做好么?
请教各位,谢谢。
你这做法就不对,你应该考虑如何保存正常的中文进数据库,而不是想着输出的时候怎么转化。还有就是,提问尽可能多提供一些信息,代码什么都没有……怎么实现的,哪里出问题?
mysql 数据库字符集使用
utf8mb4
,mysql 的utf8
不是标准的 UTF8(mysql先推出,后面才有标准的 utf8)这个需要看mysql的版本吧,5.6之前的就是utf8mb4,之后的就是正常的utf8
感谢以上回复, 我又试了一下,数据库是否设为utf8mb4似乎没有影响。 诡异的是直接 return 一个数据库结果集出现的是unicode编码,但是如果我另外做一个模板,在控制器里return view,然后把结果集传参传给模板以后显示,显示的是正常的中文,虽然不知道原因,但是这样对我来说也能接受。只是不知道是否设置了什么东西导致这种结果...
楼上各位可能没能理解楼主的意思,我想,楼主的意思是
json_encode
这个函数输出中文的时候输出的是Unicode编码的问题。其实对于这个问题可以不用管,不管你输出的是正常的中文还是Unicode编码,浏览器/客户端的json类库都能够正常解析,JSON_UNESCAPED_UNICODE
的作用一般是用来让响应体小一点。唯一可能有问题的地方就是你把json_encode的结构输出到文件后打开肉眼无法解读,这个时候才是需要添加JSON_UNESCAPED_UNICODE
参数的,如果你这种场景很多地方遇到或者觉得每次都添加都麻烦,可以将带JSON_UNESCAPED_UNICODE
的json_encode方法封装成一个独立的方法。