【问题标题】:How to add emoji support in app for posting comments in Android?如何在应用程序中添加表情符号支持以在 Android 中发表评论?
【发布时间】:2016-06-29 03:14:18
【问题描述】:

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

更新

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

【问题讨论】:

  • 你需要在 MySQL 中使用 utf8_mb4。
  • @SLaks utf8_mb4 不可用。最接近的是 utf8mb4_“这里的各种语言”或 utf8mb4_bin 或 utf8mb4_unicode_ci。我可以使用其中任何一个吗?

标签: java android mysql emoji


【解决方案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. 将 commons-lang-2.5 库从 here 添加到您的项目。
  3. 将 Emojicon 库从 here 添加到您的项目。
  4. 将库中的 TextView 和 EditText 视图添加到各自的布局中。
  5. 按照上面发布的代码将您的表情符号文本转换为 utf8mb4 编码。
  6. 享受吧!

希望这对其他人有所帮助。谢谢大家的帮助。

【讨论】:

    【解决方案2】:

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

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

    当你在看this post时,也许它可以帮助你?如果有,请告诉我们!

    【讨论】:

    • 这可能也有帮助:stackoverflow.com/questions/9740565/…
    • 签入我的 logcat 后,我​​选择的任何表情符号都显示为“��”
    • 声誉不是您发布此类帖子的好理由。通过帮助他人获得更多。不喜欢这样做
    • @SteveC。感谢您分享有关您在做什么的其他信息。我很高兴您设法找到了解决方案并且该链接很有帮助(尽管它本身还不够)。您介意将您的解决方案标记为其他人的答案吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2020-06-07
    • 1970-01-01
    • 2020-03-21
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多