PHP Mysql 字符集及中文乱码问题

本文介绍了在PHP操作MySQL时遇到的中文乱码问题,详细解析了MySQL的字符集转换过程,并提供了配置文件修改建议及代码层面的解决办法,帮助开发者避免类似问题。
摘要由CSDN通过智能技术生成
    在做项目的时候发现一种奇葩的情况:1. 直接在mysql中插入中文,正常显示;2. 使用php接受用户输入的中文写入日志,正常显示;3. 使用php将用户输入的中文写入mysql,出现乱码;4. 同样的代码在本地运行,php把中文写入mysql,正常显示。搞了半天,终于弄明白了,谨记教训,不再犯。

概念

• 字符序(Collation)是指在同一字符集内字符之间的比较规则;

• 确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;

• 每个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation);

• MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以 _ci (表示大小写不敏感case insensitive)、_cs(表示大小写敏感case sensitive)或_bin(表示按编码值比较)结尾。例如:在字符序“utf8_general_ci”下,大小写不敏感,字符“a”和“A”是等价的;

MySQL字符集

• 系统变量:

– character_set_server:默认的内部操作字符集

– character_set_client:客户端来源数据使用的字符集

– character_set_connection:连接层字符集

– character_set_results:查询结果字符集

– character_set_database:当前选中数据库的默认字符集

– character_set_system:系统元数据(字段名等)字符集

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值