首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的MySQL数据库中没有正确地存储重音字符?

问为什么我的MySQL数据库中没有正确地存储重音字符?
EN

Stack Overflow用户
提问于 2012-10-01 20:02:47
回答 2查看 220关注 0票数 0

我有一个drupal表单,它使用Doctrine库将用户输入保存到MySQL数据库中。问题是,如果用户输入带有重音字符,那么它们在DB中看起来就不太好。例如,Sempé变成了Sempé。这对我来说很奇怪因为:

  • 它存储到的字段是utf8:varchar(20) COLLATE utf8_swedish_ci NOT NULL,。
  • 表也是utf8:ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci
  • 我所有的php脚本,包括告诉drupal要添加到表单中的字段的脚本,都保存为utf-8。
  • drupal创建的表单接受utf8:<form enctype="multipart/form-data" action="/drupal/identification" method="post" id="form-identification" accept-charset="UTF-8">
  • drupal创建的页面被发送为utf8:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • php->mysql连接设置为utf8: $dbParams =数组(“驱动程序”=> "pdo_mysql“、”主机“=> variable_get("dbManip_host")、”用户“”=> variable_get“(”dbManip_user“)、”密码“=> variable_get("dbManip_password")、"dbname”=> variable_get("dbManip_dbName")、"charset“=> "utf8");

我也试过:

  • 将default_charset = "utf8"添加到php.ini
  • 在保存表单数据之前在utf8_encode中传递表单数据
  • 在保存表单数据之前在mb_convert_encoding中传递表单数据

但这些都没有用。

我在这里有遗漏什么吗?

更新

我看了一下浏览器发送给服务器的头,发现了$_SERVER['HTTP_ACCEPT_CHARSET'] === null

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 22:11:52

在通过给定的PHP链接提交任何其他查询之前,请尝试:

代码语言:javascript
复制
mysql_query('SET NAMES UTF8');

此语句表示通过相同的MySQL链接提交的进一步查询将位于UTF8字符集中。

当您希望稍后检索MySQL数据并通过PHP发布到网页时,请确保在header中设置字符集:

代码语言:javascript
复制
header('Content-type: text/html; charset=utf-8');

在显示的内容中,...and转换为HTML:

代码语言:javascript
复制
echo mb_convert_encoding($mysql_col_str, 'HTML-ENTITIES', 'UTF-8');

(这个最后的语句假设已经定义了一个变量$mysql_col_str,它包含MySQL查询返回的UTF8值)

票数 1
EN

Stack Overflow用户

发布于 2012-10-01 22:07:34

您应该尝试向实体管理器的配置中添加一个名为charset的额外参数:

代码语言:javascript
复制
$conn = array(
  'driver' => 'pdo_mysql',
  'host' => 'hostname',
  'user' => 'user',
  'password' => 'pass',
  'dbname' => 'dbname',
  'charset' => 'utf8'
);

$entityManager = \Doctrine\ORM\EntityManager::create($conn, $config);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12680214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档