header('Content-Type: text/html; charset=utf-8' );
mysql_set_charset('utf8');
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');
我做错了什么?
答案 0 :(得分:0)
当您SET NAMES utf8
时,这会将字符转换为utf8
但是如果表的默认排序规则不是utf8
,可能latin1
则会导致数据损坏。如果您使用utf8
作为字符编码,则必须使用mysqldump表并更改相应转储文件中的编码,然后重新导入数据。确保在编辑转储文件时使用不使用字符编码的文本编辑器。
答案 1 :(得分:0)
确保您正在呈现的HTML页面也具有正确的字符集。如果您进行代码检查以查看PHP服务返回的内容是否包含正确的字符?如果是这样,可能是设置HTML字符集的问题:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
要尝试,请将一些unicode字符直接粘贴到HTML中,例如✓或✔,并确保它们正确显示。
如果他们知道HTML正确传输并由浏览器正确解释。如果没有,你必须从那里开始修复你的HTML字符集。
您的HTML中是否设置了DOCTYPE
?如果不是,浏览器可能不关心你的charset。尝试将<!DOCTYPE html>
设置为HTML的第一行。
另外请确保在返回任何其他输出之前在PHP中设置标题将不会产生任何影响。