問題
- Webコンテンツの記事に絵文字を挿入すると、ポータルが記事の追加/更新に失敗し、以下のようなエラーがログに表示されます
09:33:30.544 ERROR [http-nio2-8080-exec-48][JDBCExceptionReporter:234] Incorrect string value: '\xF0\x9F\x98\x8D\xE2\x9D...' for column 'content' at row 1
環境
- Liferay DXP 7.x
解決
-
Liferay DXPは絵文字をサポートしていますが、データベースと
portal-ext.properties
のDB接続文字列の両方に変更を加える必要があります。 この記事では、MySQLのみを使用した手順を扱いますが、他のRDBMSでも同様のソリューションを利用できます -
utf8
(utf8mb3
の別名) の代わりに、文字セットutf8mb4
でデータベースを作成します 例:
CREATE DATABASE `lportal` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
utf8
の代わりに文字セットutf8mb4
のテーブルを作成します。 例:
CREATE TABLE `tablename` (
(...)
PRIMARY KEY (`primaryKey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
- データベースが既に存在する場合は
mysqldump
でデータベースをダンプし、それぞれのCREATE TABLE
クエリごとにパラメータDEFAULT CHARSET=utf8
をDEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
に置き換えます -
portal-ext.properties
のjdbc.default.url
をパラメータcharacterEncoding=UTF-8
かからuseUnicode=true
に変更します
追加情報
- LPS-43195: Exception occurred when input "emoji" as content on mobile device