sap java乱码_Unicode字符编码与解码关于乱码的abap_encoding问题以及MESSAGE异常

系统:SAP ERP ABAP

背景:一般这种问题出现在接口中,Unicode字符编码与解码的乱码,因为接口会把对方系统返回的信息进行各种编码,这时候就要使用正确的abap_encoding参数。

案例:SAP ERP->用友NC(JAVA),HTTP_POST交互,接受响应报文如果含有汉字,全是乱码,因为外部的系统是其他编码,并且如果对乱码的message进行消息抛出,则会导致消息抛出异常,系统一直转圈圈,只能结束事务。

解决:在本案例中,使用函数SCMS_BINARY_TO_TEXT进行编码,入参ENCODING如果使用的是UTF-8,则abap_encoding设置成4110 ,则问题解决。

其他:其实SAP中对字符编码与解码的函数或方法有很多,并且很多都有abap_encoding的参数,所以如果大家遇到类似问题都可以检查一下自己程序内的abap_encoding值,并且知道对接系统的字符编码。

如何将外部字符集名转换为内部编码?SAP有自己的转换函数:SCP_CODEPAGE_BY_EXTERNAL_NAME

代码:

DATA:xstr TYPE xstring,

str TYPE string,

lv_codepage(4) TYPE n .

"方法1:函数

CALL FUNCTION 'SCP_CODEPAGE_BY_EXTERNAL_NAME'

EXPORTING

external_name = 'UTF-8'

IMPORTING

sap_codepage = lv_codepage.

"方法2:方法

lv_codepage = cl_abap_codepage=>sap_codepage( 'UTF-8' ).

"编码

xstr = cl_abap_codepage=>convert_to(

source = '要编码的内容'

codepage = `UTF-8` ).

"解码

str = cl_abap_codepage=>CONVERT_FROM(

source = xstr

codepage = `UTF-8` ).

对我解决此问题的帮助文档来自江正军的技术博客,里面有比较详细的讲“字符编码与解码、Unicode”的细节:

https://www.cnblogs.com/jiangzhengjun/p/4265650.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值