博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP开发日志 ━━ MYSQL数据库使用UTF-8中文编码乱码的解决办法
阅读量:4116 次
发布时间:2019-05-25

本文共 1293 字,大约阅读时间需要 4 分钟。

今天将公司服务器上的php换成了8.0版,框架里竟然有关解决乱码的一行代码出错了,研究了半天发现是一个隐含了十年的bug…只因以前从不提示错误或警告。

顺带一句,php8.0后,函数参数如果没有初始化值会提示 PHP Deprecated 错误,比如 function xxx(a=''){}

// 以前代码:set character set "utf8" collate "utf8_general_ci"//现在改为:set character set "utf8"

因为这个框架写了太久了,反复确认以前那串代码到底是什么情况下写出来的-_-!

网上找道篇文章,内容虽然比较老,但是思路基本一致。

1.用phpmyadmin创建数据库和数据表

创建数据库的时候,请将“整理”设置为:“utf8_general_ci

或执行语句:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建数据表的时候:如果是该字段是存放中文的话,则需要将“整理”设置为:“utf8_general_ci”,

如果该字段是存放英文或数字的话,默认就可以了。
相应的SQL语句,例如:

CREATE TABLE `test` ( `id` INT NOT NULL , `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;

2.用PHP读写数据库

在连接数据库之后:

$connection = mysql_connect($host_name, $host_user, $host_pass);

加入两行:

mysql_query("set character set 'utf8'");//读库 mysql_query("set names 'utf8'");//写库

就可以正常的读写MYSQL数据库了。

用的appserv-win32-2.5.10做的环境,装这个包的时候用默认的utf8编码。
在写数据库连接文件时,写成:

$conn = mysql_connect("$host","$user","$password"); mysql_query("SET NAMES 'UTF8'"); mysql_select_db("$database",$conn);

然后在做页面时,注意这句:

这样不管输入数据库的中文,还是页面显示,就都正常了。

在DW CS4版里,默认生成的也是utf8页面。
同样的,如果一开始写数据库连接文件时写成:

mysql_query("SET NAMES 'GBK'");

那页面也要相应变成:

总结,最后主要是页面编码要统一就可以很方便的解决乱码问题,特别是在mysql_query()这个set names的设置必须和页面及数据库编码统计一就可以了。

参考:

转载地址:http://oxkpi.baihongyu.com/

你可能感兴趣的文章
db db2_monitorTool IBM Rational Performace Tester
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
Flutter Boost的router管理
查看>>
iOS开发支付集成之微信支付
查看>>
C++模板
查看>>
【C#】如何实现一个迭代器
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
DirectX11 光照演示示例Demo
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Node.js-模块和包
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>