You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy安卓应用分享至WhatsApp时Emoji显示为中文符号求助

问题解决:安卓Kivy应用分享Emoji到WhatsApp/Messenger显示异常

问题原因分析

  • Unicode转义符格式错误:你代码中写的/U0001F947是错误写法,Python中正确的Unicode转义需要用反斜杠\,即\U0001F947。Windows控制台可能因兼容机制暂时显示正常,但安卓系统无法解析正斜杠开头的转义符,最终导致Emoji显示为乱码或中文符号。
  • Java String构造冗余:手动用java.lang.String包裹Python字符串,可能干扰了Unicode字符的编码转换流程,导致第三方应用接收时字符损坏。

解决方案

1. 修正Unicode转义符

替换错误的转义格式,三款奖牌Emoji的正确Unicode如下:

  • 第一名奖牌:\U0001F947
  • 第二名奖牌:\U0001F948
  • 第三名奖牌:\U0001F949

2. 优化分享代码

jnius会自动处理Python字符串到Java String的编码转换,无需手动构造java.lang.String,修改后的代码如下:

def share_app(self):
    from kivy import platform

    # 使用正确的Unicode转义符
    emoji_test = "\U0001F947"

    if platform == 'android':
        from jnius import autoclass

        PythonActivity = autoclass('org.kivy.android.PythonActivity')
        Intent = autoclass('android.content.Intent')
        intent = Intent()
        intent.setAction(Intent.ACTION_SEND)
        # 直接传递Python字符串,jnius自动完成编码转换
        intent.putExtra(Intent.EXTRA_TEXT, f"{emoji_test} 你的计分结果内容")
        intent.setType('text/plain')
        chooser = Intent.createChooser(intent, "")
        PythonActivity.mActivity.startActivity(chooser)

3. 若使用emoji库的注意事项

如果坚持使用emoji库,需确保:

  • 在buildozer.spec的requirements中添加依赖:
    requirements = python3,kivy,emoji
    
  • 调用时使用别名参数保证兼容性:
    import emoji
    emoji_test = emoji.emojize(":first_place_medal:", language='alias')
    

验证

修改完成后重新打包APK,测试分享到WhatsApp和Facebook Messenger,Emoji即可正常显示。

内容的提问来源于stack exchange,提问作者Callum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:47:19