MySQL 和 UTF-8 的问题

MySQL 和 UTF-8 的问题

我在配置使用 UTF8 的服务器时遇到了问题。好吧,我并没有完全按照这个方式配置。我工作的地方的一位客户就是这样的,我认为他不是配置 Web 服务器的专家。

我的 PHP+MySQL 应用程序需要使用 UTF8 的 Apache 和 MySQL。在发送了多封电子邮件后,此人已将 apache 配置为支持 utf8,但现在该配置 MySQL 了,我们无法对其进行配置。我不知道该怎么办,因为我不是系统管理员,但我在 Google 上配置了 ubuntu 上的 apache/mysql,并支持 utf8。

我对他说的是,请使用下一个配置我的cnf

[mysqld]
character-set-filesystem=UTF8
character-set-server=UTF8
default-collation=UTF8_general_ci
default-character-set=UTF8

[client]
default-character-set=UTF8

[mysqldump]
default-character-set=UTF8

但什么都没改变。他传给我正在运行的 my.cnf,你可以在这里看到它:http://pastebin.com/NfcgKKiM...并且 MySQL 上的 UTF8 编码不起作用。

我在 PHP 中所做的是每次都使用SET NAMESutf8`` 启动 MySQL 查询,并且它以 UTF8 的形式工作,但我不认为这是最好的选择,但这证明有些地方配置错误。不是吗?

我能做什么?我能对服务器管理员说什么?

谢谢你!抱歉我的英语不好!

答案1

DB(显示创建数据库 DB_NAME) 中的“CHARACTER SET”和“COLLATE”是什么?

尝试:

[mysqld]
init-connect='SET NAMES utf8'

答案2

你的 中缺少几个参数my.cnf,下面是我的

[client] 
default-character-set=utf8 

[mysql] 
default-character-set=utf8 

[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
default_character_set=utf8
character_set_server = utf8
collation_server = utf8_general_ci

这应该会为你提供 MySQL 后端的完全 UTF8 支持

答案3

  • 确保你的表在 MySQL 中具有正确的字符集
  • 在所有页面上使用 UTF-8 内容编码
  • 将 MySQL 会话字符集设置为 UTF-8

我的所有页面都是这样开始的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

我的 MySQL 连接如下所示:(注意调用PDO::exec()

try {
  $dbh = new PDO(('mysql:host=' . $mbdbhost . ';dbname=' . $mbdbname), $mbdbuser, $mbdbpass, array(PDO::ATTR_PERSISTENT => true));
  $dbh->exec('SET CHARACTER SET utf8');
} catch (PDOException $e) {
  header("Location: error.php");
}

我的表格看起来有点像这样:

CREATE TABLE IF NOT EXISTS fotouser (
  idfotouser INT NOT NULL AUTO_INCREMENT ,
  person INT NOT NULL ,
  PRIMARY KEY (idfotouser) ,
  INDEX person (person ASC) ,
  CONSTRAINT person
   FOREIGN KEY (person)
   REFERENCES mb_person (idmb_person)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_swedish_ci ;

相关内容