我将所有关于编码的内容设置为utf8。但浏览器显示我'???????'。我的设置如下。
MySQL“显示类似'c%'的变量”
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
.... (all utf8)
MySQL my.cnf
[client]
default-character-set = utf8
[mysqld]
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET names utf8"
character-set-server = utf8
collation-server = utf8_general_ci
[mysql]
default-character-set = utf8
在我的所有PHP文件中包含:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
Apache2 httpd.conf
AddDefaultCharset Off (if utf-8, show me '???' ,too)
在MySQL控制台中,(转储数据库)
SELECT name from campagin LIMIT 1
=> print in working order, not '????'
我不知道什么是问题。
作为参考,我在test.php中测试了这个案例..
<?php
mysql_connect('localhost','root',ROOT_PW);
mysql_select_db(TEST_DB_NAME);
mysql_query("INSERT INTO a SET msg='안녕하세요'"); // char is KOREAN, meaning 'Hi'
$res = mysql_query("SELECT msg FROM a LIMIT 1");
$row = mysql_fetch_assoc($res);
echo $row['msg'];
?>
=> this print '안녕하세요' in working order not '????'
但在MySQL控制台
"SELECT msg FROM a LIMIT 1"
=> print not '안녕하세요' but abnormally '안녕하세요'
增加: 在mysql控制台
"SHOW CREATE TABLE a"
=> Table | Create Table
a | CREATE TABLE `a` ( 'msg' varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
答案 0 :(得分:1)
使用基础mysql_
连接器,您需要声明
mysql_query( "SET NAMES utf8" );
mysql_query( "SET CHARACTER SET utf8" );
这些告诉MySQL你与它的通信将通过UTF8,否则它可能无法正常工作。
您还需要确保您的表及其列定义为UTF-8,MySQL在列级别处理编码。如果您SHOW CREATE TABLE campagin
您在表格和列上进行编码会得到什么?如果列没有吐出编码,则默认为表级编码。