再一次php mysql导出UTF-8问题
我开发了一个PHP/MySQL应用程序,其中存储了一个表名。这些名称有时包含特殊字符(如é、ë、ë等) 创建表格时,我忘记将搭配项设置为UTF-8,现在设置为LATIN1_SWEDISH_CI。 因此,有些数据在phpMyAdmin中显示不正确。但当我在PHP页面上显示名称时,这些特殊字符会正确显示。下面是我使用UTF-8的PHP文件的摘录再一次php mysql导出UTF-8问题,php,mysql,utf-8,export,special-characters,Php,Mysql,Utf 8,Export,Special Characters,我开发了一个PHP/MySQL应用程序,其中存储了一个表名。这些名称有时包含特殊字符(如é、ë、ë等) 创建表格时,我忘记将搭配项设置为UTF-8,现在设置为LATIN1_SWEDISH_CI。 因此,有些数据在phpMyAdmin中显示不正确。但当我在PHP页面上显示名称时,这些特殊字符会正确显示。下面是我使用UTF-8的PHP文件的摘录 <?php ... ?> <html> <head> <meta http-equiv="Conten
<?php ... ?>
<html>
<head>
<meta http-equiv="Content-Type" content-"text/html; charset="UTF-8">
....
您已经存储了UTF-8编码的数据,MySQL将其视为Latin-1数据。MySQL不会对此抱怨,因为任意字节序列都是有效的拉丁-1。由于用于检索数据的连接的连接字符集与用于插入数据的连接字符集相同,因此网页上会显示正确的数据。但是,如果您在一个实用程序中查看数据,该实用程序会费劲地显示实际存储的字符,您将看到错误编码的文本,因为这就是您实际存储的文本
您需要做两件事:首先,您需要更改数据库连接代码,以确保与数据库的所有连接都使用UTF-8字符集。这可以通过使用设置文件或每次连接时发出SET NAME语句来实现
其次,您需要更正数据库中已存储的错误编码数据不更改表格,直接将字符集更改为UTF-8;如果这样做,最终将得到双UTF-8编码的数据。相反,使用alter table查询将列更改为二进制字符集,然后再次将table更改为UTF-8。它们根本不在CSV文件中(即,甚至不在记事本中),还是Excel在显示它们时遇到问题?Excel通常难以识别CSV文件的编码,因此您可能还需要检查Excel是否正确配置。
<?php
mysql_query("SET NAMES utf8");
header('Content-Type: text/html; charset=UTF-8');
...