请教个字符编码问题

公共马甲0315 2019-09-11 05:35:54
我不希望php存中文到MySQL当中时,再读取出来得到的是乱码,所以我抄了两个函数稍微调整了下:

function strToUtf8($str)
{
$encode = mb_detect_encoding($str, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
if($encode == 'UTF-8')
{
return $str;
}
else
{
return mb_convert_encoding($str, 'UTF-8', $encode);
//return iconv($encode,'UTF-8',$str);
}
}

//转GB2312字符集
function strToGB($str)
{
$encode = mb_detect_encoding($str, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
if($encode == 'GB2312')
{
return $str;
}
else
{
return mb_convert_encoding($str,'GB2312',$encode);
//return iconv('UTF-8','GBK//IGNORE',$str);
}
}

不管Mysql当中是不是乱码,只要能正常保存进去(strToUtf8()),并且读取时(strToGB()),获得的中文是正确的就行了。
现在的问题是,我的xampp环境,有的电脑上一存一读出来的是正确的中文,有的出来就是乱码。数据库是使用正确的Mysql上面导出再导入的。
求大侠指点下,只是希望达到这样的效果。
我的页面是gb2312,Mysql好像是UTF-8的。请教下出现乱码的原因是什么?有没有更好的解决方法
...全文
408 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
公共马甲0315 2019-10-02
  • 打赏
  • 举报
回复
不过,这个xampp集成的phg,里面的函数实现体,并不是真正的gb2312的。function strToGB($str)解析出来的字符,传给c++窗口,发现还是utf-8,还需要一次MultiByteToWideChar(CP_UTF8,NULL,strUTF8,-1,wszBuffer,nLen);才真正变成gb2312的。。。。
公共马甲0315 2019-09-25
  • 打赏
  • 举报
回复
已经解决了,我用的是mb函数,数据库得按照这个格式mb4设置一下的。
kang#kang 2019-09-12
  • 打赏
  • 举报
回复
你的php和数据库使用的编码不一致导致的 存进去 再读出来就乱码了 建议你把数据库编码设置一下 而不是改代码
于小九 2019-09-12
  • 打赏
  • 举报
回复
建议传输与储存的时候两个地方都用共同编码比较好

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧