【发布时间】:2021-01-20 17:38:04
【问题描述】:
使用 Whatsapp 'Click To Chat' 我可以按预期向一个号码发送消息。 但是,我想在预填充的消息中发送一些表情符号。当我使用浏览器时它运行良好,但当我在应用程序中使用 WebView 时它不起作用(特别是带有运行同一站点的 webview 的 React Native 应用程序)。
问题:
对于桌面浏览器或 webView,我使用相同的功能和相同的编码 (encodeURI()),但是
当 WebView 调用 Whatsapp URL(“wa.me/...”)时,Whatsapp 上的聊天会将所有表情符号显示为:�
- 甚至可以在 Whatsapp Click to Chat 上使用表情符号吗? (我敢打赌,因为桌面浏览器可以工作)。
- 在移动/应用上会发生什么?
- 我应该使用某种字符编码,如 unicode、UTF-8(我已经测试了一些,但没有成功)?
这是我正在使用的函数:
SendWhatsapp = function(message, number) {
number = LibGeral.NormalizeMobileNumber(number);
if (empty(message)) {
message = "";
}
var urlApiWhats = "https://wa.me/" + number + "?text=" + message;
urlApiWhats = encodeURI(urlApiWhats);
var a = document.createElement("a");
a.setAttribute("data-action", "share/whatsapp/share")
a.href = urlApiWhats;
window.document.body.appendChild(a)
a.click();
window.document.body.removeChild(a);
return true;
}
SendWhatsapp("I'm a message with emoji ????", "xxxxxxxxx")
如前所述,在应用程序的 WebView 内部,它调用了 whatsapp url 并正确打开了聊天,但表情符号丢失了,只显示了一个问号。在浏览器(例如 Chrome)上,它运行良好并且出现表情符号(甚至在移动版 Chrome 上) 此外,即使我删除了 encodeURI 并“直接”传递了表情符号,它仍然无法正常工作。 我很确定几周前它还在工作......
【问题讨论】:
-
表情符号是特殊字符(unicode)。您可能只是在将消息添加到 URL 参数之前对这些消息进行 URL 编码。你可以使用
URLEncoder.encode()。 -
@KenVanHoeylandt “未定义 URLEncoder”
-
我也面临同样的问题;它以前一直在工作,自从几周后,无论你如何编码,你都会得到这个问号。移动设备仍然可以正常工作,但在计算机上,浏览器显示问号,并且向前移动到 WhatsApp 应用程序(mac/win),这是错误的。
标签: javascript encoding whatsapp emoji