如何在app中添加表情符号支持以在Android中发布评论?

时间:2016-06-29 03:14:18

标签: java android mysql emoji

我有一个应用程序,用户可以在其中发布产品/项目的评论,然后它将上传到我的服务器。然后,应用程序加载已从MySql数据库发布的注释的列表视图。默认情况下,用户可以在评论帖中添加表情符号,因为他们的设备是'键盘,但当应用程序刷新评论列表时,表情符号显示为????。如何添加对表情符号的支持?

更新

我使用标准TextView来显示评论。发布评论是标准的EditTextView。根据下面的答案,我在logcat中包含了edittext视图中的文本,我选择的任何表情符号都显示为��。

2 个答案:

答案 0 :(得分:1)

确定。我想出了如何让它发挥作用。按用户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);

因此,对于其他可能会看到此内容且希望在其应用中获得表情符号支持的人,以下是您需要遵循的清单:

  1. 按照this链接确保您的数据库排序规则/字符集是utf8mb4。
  2. here
  3. 将commons-lang-2.5库添加到您的项目中
  4. here
  5. 将Emojicon库添加到您的项目中
  6. 将库中的TextView和EditText视图添加到各自的布局中。
  7. 按照上面发布的代码将您的表情符号文本转换为utf8mb4编码。
  8. 享受!
  9. 希望这有助于其他人。谢谢大家的帮助。

答案 1 :(得分:0)

我没有足够的声誉所以我必须回答而不是评论。

您可以分享一些关于如何显示表情符号的其他信息吗?它是否在TextView中显示?此外,您尝试显示的字符串的值是什么,您可以通过在代码中设置字符串之前记录字符串的值然后在logcat中查看它来找到它。

当你在观看this post时,或许它可以帮到你吗?如果是这样,请告诉我们!