前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP and Unicode

ABAP and Unicode

作者头像
古道无仙
发布2021-03-24 14:08:32
9720
发布2021-03-24 14:08:32
举报
文章被收录于专栏:叕鰦座叕鰦座

最近S4MOVE项目多起来了,想到之前上一个升级周期的时候还是10年前,ECC时代,那就总结下这么多年来ABAP发展中的编码;

从6.10版开始,ABAP支持用Unicode对字符进行多字节编码(强制使用)

在6.10版本之前,ABAP只使用基于单字节代码(如ASCII和EBCDIC)或双字节代码(如SJIS和BIG5)的字符集

编码不影响前台显示,大家在US(Unicode system)写的代码,是可以正常的导入到NUS(non-Unicode system)的。

an explicit or implicit assumption is made about the internal length of a character.

所以在对应ECC6.10版本以上的升级,ABAP会有一个工作是对程序进行Unicode的编码转换

接着,先讲一下和ABAP相关涉及项:

字符编码

ABAP开发中的字符设置

NUS的程序限制

Unicode中的ABAP new 程序定义

Unicode中的ABAP new class

Unicode中的ABAP new RFC

Unicode术语表

字符编码:

给大家看一组直观展示的字符编码,同样的文本,在不同的字符编码下有不同的展示:

在过去,SAP开发人员使用各种代码对不同字母的字符进行编码,例如,ASCII、EBCDI或双字节代码页:

ASCII(美国信息交换标准代码):

例如:ISO88591或ISO88595等

用1字节= 8位对每个字符进行编码,最多2个8 = 256个字符,将组合[00000000,11111111]分配给这些字符。

EBCDI(扩展二进制编码的十进制交换):

例如:EBCDIC 0697/0500(IBM格式)

用1个字节对每个字符进行编码,也是表示为256个字符。

双字节码页面:

例如:日文的SJIS和用于繁体中文的BIG5

每个字符1或2字节,形成2的16次方 = 65536的组合,通常只使用10,000 - 15,000个字符。

通常我们的实际电脑使用中就是使用这些字符集,这完全没有问题。但是,如果您想在一个系统中合并来自不同地区的字符集,有可能出现不兼容字的文本,就会出现问题。同样,在具有不兼容字符集的系统之间交换数据也会出现问题。

解决这个问题的一个办法是使用一个包含地球上所有字符的代码。这个代码称为Unicode (ISO/ iec10646),它至少由16位= 2字节,或者32位= 4字节每个字符组成。

这也是为什么R/3开始,SAP的系统强制使用UNS的原因:

使用Unicode,你可以在一个前端计算机上同时使用多种语言。

Unicode允许所有R/3用户安装一个中央R/3系统,覆盖全球所有业务流程。

跨应用程序数据交换需要Unicode,而不会因为不兼容的字符集而丢失数据。(SOAP,API等)

WINDOWS安装下相关的部分动态库:

icudt50.dll

icuin50.dll

icuuc50.dll

在有些很特殊的疑难情况下,可能并不是因为大家的代码写得有问题,而是编码问题,不过在现在大家越来越规范的情况下,已经很少出现了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叕鰦座 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档