我有一个应用程序,用户可以在其中发布产品/项目的评论,并将其上传到我的服务器。然后,该应用程序加载已从MySql数据库发布的评论的列表视图。默认情况下,由于设备的键盘,用户可以在其评论帖子中包含表情符号,但是当应用刷新评论列表时,表情符号显示为????。如何添加对表情符号的支持?
更新
我正在使用标准的TextView显示评论。发布评论是标准的EditTextView。根据下面的答案,我在logcat中包括了edittext视图中的文本,并且选择的任何表情符号都显示为^。
最佳答案
好。我想出了如何使其工作的方法。每个用户6526330的链接。我首先必须添加库commons-lang-2.5.jar并将以下内容用于EditText和TextView。
//This converted the emoji code to utf8md4 for the server
String cmttxt = newCmnt.getText().toString().trim();
String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(cmttxt);
//This converted the server response to properly show the emoji
String serverResponse = "Some string from server with emoji code embedded";
String fromServerUnicodeDecoded = StringEscapeUtils.unescapeJava(serverResponse);
但这还不足以使事情正常进行,因为标准的EditText和TextView不知道如何翻译表情符号代码。因此我找到了Emojicon库here。
使用该库中的TextView和EditText使我可以正确地发布和接收带有嵌入式表情符号的文本。
我还必须将数据库的字符集更改为utf8md4_unicode_ci,以使数据库正常显示。
因为我使用PDO发布评论,所以我不得不更改此行:
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
至
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8mb4", $username, $password, $options);
因此,对于可能会看到此问题并希望在其应用程序中支持表情符号的其他人,您需要遵循以下清单:
通过单击this链接,确保您的数据库排序规则/字符集为utf8mb4。
从here将commons-lang-2.5库添加到您的项目中。
从here将Emojicon库添加到您的项目中。
将库中的TextView和EditText视图添加到它们各自的布局中。
请按照上面发布的代码将表情符号文本转换为utf8mb4编码。
请享用!
希望这对其他人有帮助。感谢大家的帮助。