近日弄了个免费php空间,打算用来发个外链什么的,于是乎创建数据库,写入数据,但是当我把数据读取显示时,出了个问题就是中文全是???号了!
由于是免费的空间mysql数据库都是配置好我,我也无从配置起,所以只能通过“SET NAMES UTF8”来解决这个问题,其实要解决这个中文显示为???也挺容易,就是在连接数据库的时侯声明一下编码。简单说就是在创建连接后紧接着在后面加一段SET NAMES UTF8声明。如:
$conn = new mysqli($servername, $username, $password, $dbname); mysqli_query($conn,"SET NAMES UTF8");
做好上面的声明后显示正常了,
需要注意的是这里需要与header中设置的编码与文件本身的编码相一致。即文件编码为utf-8那么header中设置utf-8,SET NAMES也应该与之相对应,但是要注意charset中为utf-8,但是下面为UTF8。有时侯容易错把下面写为SET NAMES UTF-8(就错了)。
文件编码可以通过编辑器查看,如我使用的是VSCODE在下方的状态栏看到,
只有当这三个地方都一致了才能够不报乱码。其它如果是gbk则为SET NAMES GBK。不过现在一般都使用UTF-8编码了,很少有GBK的。