問題
- AntiSamyが有効な場合、絵文字がサニタイズされています。
- 文字コードが前に書いた絵文字と一致している場合、ログに警告が表示されます:
Could not execute JDBC batch update - 絵文字は投稿後、漢字に切り替わります。
Environment
- DXP 7.0
- DXP 7.1 フィックスパック28以下
- DXP 7.2 フィックスパック19以下
- DXP 7.3以下アップデート5
解決策
- この問題は、 LPS-136907によって修正され、DXP 7.1-DXP 7.3 の公式修正パック/アップデートですでにリリースされている既知の問題である。
- 適切な修正パック/アップデートに更新することで、MariaDBを除くほとんどのデータベースで問題が自動的に解決されます(追加の設定を行う必要があります):
-
my.ini(Windowsの場合:C:◆Program FilesMariaDB 10.2◆data◆my.ini) 設定ファイルに以下の行を設定します(設定に追加の行がある場合は、追加の行の後にこれらの行を押してください):
[mysqld]
character-set-client-handshake = FALSE
skip-character-set-client-handshake
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='set names utf8mb4'
init-connect='set collation_connection = utf8mb4_unicode_ci'
init-connect='set character_set_client = utf8mb4'
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4 -
データベースで次のクエリを実行します:
USE liferay;
ALTER DATABASE liferay CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE mbmessage CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
追加で実行するクエリです:
USE liferay;
SET NAMES UTF8MB4; -
以下のクエリーを実行し、以下のような構成になっているかどうかを確認します:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
キャラクタセットクライアント アウトゥファイトエムビーフォー キャラクタ_セット_コネクション アウトゥファイトエムビーフォー キャラクタ_セット_データベース アウトゥファイトエムビーフォー キャラクタ_セット_ファイルシステム バイナリ キャラクタ_セット_結果 アウトゥファイトエムビーフォー キャラクターセットサーバー アウトゥファイトエムビーフォー キャラクタ_セット_システム ユーティファイト collation_connection utf8mb4_general_ci collation_database utf8mb4_unicode_ci 照合サーバ utf8mb4_unicode_ci - ポータルを起動します。
- 期待した結果と実際の結果 UIに絵文字が表示され、絵文字に関連するログにエラーは表示されない。