美文网首页
关于 SAP Fiori 应用里如何处理名称包含中文的附件文件上

关于 SAP Fiori 应用里如何处理名称包含中文的附件文件上

作者: _扫地僧_ | 来源:发表于2024-02-06 10:52 被阅读0次

    有朋友在我的知识星球问我一个问题,关于 ABAP 上传文件到企业微信时,文件名如果包含中文,发送到企业微信群后,中文字符无法正常显示,变成了 # 符号:

    从这位朋友提供的 ABAP 代码可以看出,包含中文字符的文件名,在 ABAP 代码准备发送到企业微信时,没有进行编码处理。

    我们可以看看 SAP 标准的 Fiori 应用,是如何处理文件名包含中文字符的附件上传的。

    我新建一个本地 text 文件,取名为 汪.txt:

    在网上找个工具网站,查询出汉字 的 UTF-8 编码为 E6B1AA:

    我们通过 SAP Fiori 应用上传后,在应用上能正常显示这些中文文件名的附件:


    在 SAP UI5 JavaScript 代码里,文件名 汪.txt, 被浏览器支持的原生函数 encodeURIComponent,编码为 %E6%B1%AA.txt

    从 Chrome 开发者工具 Network 面板能看到,从 SAP UI5 发送到 ABAP 后台的文件名,确实是编码之后的值:

    这个编码之后的值,传递到了 ABAP 后台:%E6%B1%AA.txt

    通过 ABAP 工具类方法,cl_http_utility=>if_http_utility~unescape_url ,将编码后的值,重新解码,得到原始值 汪.txt

    在 SAP CRM 后台系统的 CRMD_ORDER 事务码里,这些中文名称的附件也能正常显示:

    回到题目开头朋友提到的问题,在 ABAP 代码里,可以在发送文件之前,将包含中文字符的文件名,通过 ABAP 工具方法 cl_http_utility=>escape_url 进行编码。

    data(lv) = cl_http_utility=>escape_url( unescaped = '汪').
    

    但是如果在企业微信服务器端,没有对这个编码后的值,进行类似上文介绍的 ABAP 服务器端的解码操作,最后显示在企业微信里的文件名,就会像下图这样:

    相关文章

      网友评论

          本文标题:关于 SAP Fiori 应用里如何处理名称包含中文的附件文件上

          本文链接:https://www.haomeiwen.com/subject/qhkyndtx.html