根据SAP使用数据不一样汉字占用长度不同!
因为外围系统汉字占两个字符,导致SAP传给外围系统报错说超长,一开始使用strlen判断长度 如果是因为字母没问题,汉字也按照一个字符串算。通过查找帮助文档找到class 闲话少说直接上代码:
lv_string = `这是一个测试中文字符串长度例子abc`.
DATA(lv_xstr) = cl_abap_conv_codepage=>create_out( codepage = `GBK`
)->convert( lv_string ).
" 使用XSTRLEN获取字符串长度,汉字计为两个字符
cl_demo_output=>display(
| strlen长度 { strlen( lv_string )
} \n xstrlen长度 { xstrlen( lv_xstr ) }| ).
注意:UTF-16由12个字节表示
在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。
在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。
113

被折叠的 条评论
为什么被折叠?



