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

2024-02-06  本文已影响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 服务器端的解码操作,最后显示在企业微信里的文件名,就会像下图这样:

上一篇 下一篇

猜你喜欢

热点阅读