【问题标题】:Send Emoji from EditText to Server将 Emoji 从 EditText 发送到服务器
【发布时间】:2018-09-26 10:37:16
【问题描述】:

我将文本从 EditText 字段发送到我的服务器并将其存储在 Mysql 数据库中。它工作正常。但是当我尝试发送表情符号时,它只发送文本。所以我谷歌了一些东西,发现唯一的解决方案是转换 EditText 值。

我尝试了以下方法:

String toServer = EditText.getText().getString();
String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(toServer);

现在表情符号具有 java unicode 格式。差点……

例如。它应该是“\u2764”,但在我的服务器上它得到“u2764”。所以它不发送“\”。我试图将字符串“\u2764”发送到服务器。它有效。

有人可以告诉我为什么它没有发送正确的“\u2764”并删除“\”...

【问题讨论】:

  • 请提供更多细节。在哪个地方反斜杠被删除?有太多地方会出错。你如何将数据发送到后端?通过 JSON 还是 XML?你用哪个解析器和哪些配置来解析它们? StringEscapeUtils 下隐藏了什么?
  • App 中的反斜杠被移除。所以我得到了 Edittext 并且它仍然是正确的反斜杠。然后我将带有 volley/json 的数据发送到我的 PHP 脚本。但是我的 PHP 脚本没有反斜杠。但它必须在应用程序中,因为如果我用“\u2764”创建一个字符串并将其发送到我的 PHP 脚本,它就可以工作。
  • 能否将应用程序发送到 PHP 后端的 JSON 附加到帖子中?

标签: java android unicode emoji unicode-escapes


【解决方案1】:

许多产品使用反斜杠 \ 作为“转义”字符。他们对角色采取行动,否则将其丢弃。

如果产品没有要执行的操作,很可能会直接将其丢弃。

某些产品会将\u2764 视为沉重的黑心(),将6 个字节替换为3 字节UTF-8 字符与十六进制E29DA4

其他人会说“嗯,我不会在反斜杠后使用 u,所以我会简单地扔掉反斜杠。”这会将 6 个字符 \u2764 转换为 5 个字符 u2764

\u2764 是从哪里来的?如果它来自 PHP json_encode,则附加 JSON_UNESCAPED_UNICODE 作为第二个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2018-05-17
    • 2022-01-23
    • 2020-01-07
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多