🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名 →

Drupal 7:支持 emoji 表情符号 😬

Drupal 7.5 开始支持 utf8mb4,一种数据库字符集,有了它你的文章里就可以用 emoji 了,就是这种东西: 😀 😬 😁 😄 😊 。先看一下自己的环境是不是满足 Drupal 的要求,如果满足就可以配置数据库,修改 Drupal 的配置文件,转换数据表,让你的 Drupal 支持 emoji 。

需求

  1. mysql 5.5.3 或以上版本。
  2. PHP MySQL 引擎必须支持 utf8mb4 字符集, libmysqlclient 5.5.3 或以上,mysqlnd 5.0.9 或以上。

配置数据库

编辑配置文件(/etc/my.cnf),在 mysqld 区域的下面,添加需要的配置。像这样:

[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=true

重启数据库:

sudo systemctl restart mysqld

如果是 mariadb:

sudo systemctl restart mariadb

配置 Drupal

修改 Drupal 的配置文件(settings.php),在数据库相关的配置里面,添加 charset 与 collation 选项。参考:

$databases['default']['default'] = array(
  'driver'      => 'mysql',
  'database'    => 'databasename',
  'username'    => 'username',
  'password'    => 'password',
  'host'        => 'localhost',
  'charset'     => 'utf8mb4',
  'collation'   => 'utf8mb4_general_ci',
);

准备工具

把数据表从 utf8 转换成 utf8mb4,可以使用一个 drush 插件,先下载这个插件:

drush @none dl utf8mb4_convert-7.x

返回:

Project utf8mb4_convert (7.x-1.0-beta2) downloaded to /root/.drush/utf8mb4_convert.  [success]
Project utf8mb4_convert contains 0 modules: .

清空 drush 缓存:

drush cc drush

开始转换

打开网站维护模式:

drush vset maintenance_mode 1

执行转换:

drush utf8mb4-convert-databases

返回:

This will convert all databases defined in settings.php to utf8mb4. Back up your databases before  continuing! Continue? (y/n): y
Target MySQL database: xx@localhost (default:default)
Converting database: xx
Converting table: actions
Converting table: advanced_help_index
Converting table: authmap
Converting table: backup_migrate_destinations
Converting table: backup_migrate_profiles
Converting table: backup_migrate_schedules

成功以后,关掉网站维护模式:

drush vset maintenance_mode 0

验证转换结果:

drush sql-cli
show table stauts where name like 'users'

你会看到:

utf8mb4_general_ci

说明转换成功了,在 Drupal 后台去创建一个新内容,里面添加几个表情符号试一下。

Drupal
微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点