Sap PyRFC中nuc_长度和uc_长度参数的含义?

Sap PyRFC中nuc_长度和uc_长度参数的含义?,sap,saprfc,pyrfc,Sap,Saprfc,Pyrfc,我最喜欢的搜索引擎()无法从上游(SAP)找到关于uc\u lengthvsnuc\u length含义的规范文档 两者的区别是什么 我通过修改版本的 我不能确定他们在Python脚本中做了什么,但基于我对ABAP/SAP的了解,我可以很容易地说: nuc_length:非Unicode ABAP系统中参数的长度,以字节为单位 uc_length:a中参数的长度,以字节为单位 基于非Unicode ABAP的系统使用一个字节对每个字符进行编码,而基于Unicode ABAP的系统使用两个字节

我最喜欢的搜索引擎()无法从上游(SAP)找到关于
uc\u length
vs
nuc\u length
含义的规范文档

两者的区别是什么

我通过修改版本的


我不能确定他们在Python脚本中做了什么,但基于我对ABAP/SAP的了解,我可以很容易地说:

  • nuc_length:非Unicode ABAP系统中参数的长度,以字节为单位
  • uc_length:a中参数的长度,以字节为单位
基于非Unicode ABAP的系统使用一个字节对每个字符进行编码,而基于Unicode ABAP的系统使用两个字节对每个字符进行编码。从ABAP7.50开始,所有系统都是Unicode

在基于Unicode ABAP的系统中,字符串和文本字段可以存储从U+0000到U+FFFF的Unicode字符。请注意,ABAP运行时环境将字符U+D800到U+DFFF视为与实际字符相似(dixit:“ABAP编程语言支持UCS-2所涵盖的子集,而不是完整的UTF-16集。”)

请注意,结构化参数由多个可以混合字符和非字符的字段组成,“uc_长度”将仅使字符字段的字节数加倍。由于存在错误,字段之间也存在一些伪字节


在您的示例中,Unicode系统中80字节的文本字段对应40个字符。

我不能确定它们在Python脚本中的作用,但根据我的ABAP/SAP知识,我可以轻松地说:

  • nuc_length:非Unicode ABAP系统中参数的长度,以字节为单位
  • uc_length:a中参数的长度,以字节为单位
基于非Unicode ABAP的系统使用一个字节对每个字符进行编码,而基于Unicode ABAP的系统使用两个字节对每个字符进行编码。从ABAP7.50开始,所有系统都是Unicode

在基于Unicode ABAP的系统中,字符串和文本字段可以存储从U+0000到U+FFFF的Unicode字符。请注意,ABAP运行时环境将字符U+D800到U+DFFF视为与实际字符相似(dixit:“ABAP编程语言支持UCS-2所涵盖的子集,而不是完整的UTF-16集。”)

请注意,结构化参数由多个可以混合字符和非字符的字段组成,“uc_长度”将仅使字符字段的字节数加倍。由于存在错误,字段之间也存在一些伪字节


在您的示例中,Unicode系统中80字节的文本字段对应40个字符。

我理解,但它不是直接的。我的SAP服务器是基于unicode的。我查看相应的uc_长度并读取80。但是现代语言不使用字节来表示字符串,而是使用一些高级unicode。作为一名开发人员,我想知道:我可以在这个字段中输入多少个字符?当然我可以做数学
80/2==>40
。我知道utf16是什么,但是。。。为什么不告诉开发人员可以传输的unicode字符数?我知道你不是这个发明者。非常感谢你的回答。我只需要写下我的想法。@guettli:没那么容易。如果技术上正确,以字节为单位的长度是唯一可以确定返回的内容。其中可以容纳多少字符取决于使用的代码页。如果您知道UTF-16,那么一个字符总是需要至少2个字节,但也可能需要2个字节的倍数。非unicode长度也是如此。虽然标准US-ASCII字符通常只需要1个字节,但如果指定日文或中文字符,则需要更多字节。您想要什么,即最大字符数,无法给出,因为它取决于代码页。@Trixx您说这不是那么容易。我希望这是可能的。我提出了一个新问题“如何确定字段中允许的字符数?”@Trixx所说的(也称为DBCS/MBCS),我不知道ABAP考虑了这些字符(第一个字符U+D800-U+DFFF后跟另一个字符将对应于U+010000-U+10FFFF字符)。ABAP文档更多地讨论UCS-2(忽略U+D800-U+DFFF)而不是UTF-16。可以肯定的是,Unicode系统中80字节的文本字段最多可以包含40个字符。到目前为止,我还只知道使用了UCS-2字符。但是,Unicode ABAP系统使用代码页4102或4103,即UTF-16。因此,理论上,这可能会在未来发生变化,SAP还可以存储4字节字符。真正的UCS-2代码页(仅允许2字节字符)将改为代码页4100和4101。我理解,但这不是直截了当的。我的SAP服务器是基于unicode的。我查看相应的uc_长度并读取80。但是现代语言不使用字节来表示字符串,而是使用一些高级unicode。作为一名开发人员,我想知道:我可以在这个字段中输入多少个字符?当然我可以做数学
80/2==>40
。我知道utf16是什么,但是。。。为什么不告诉开发人员可以传输的unicode字符数?我知道你不是这个发明者。非常感谢你的回答。我只需要写下我的想法。@guettli:没那么容易。如果技术上正确,以字节为单位的长度是唯一可以确定返回的内容。其中可以容纳多少字符取决于使用的代码页。如果您知道UTF-16,那么一个字符总是需要至少2个字节,但也可能需要2个字节的倍数。非unicode长度也是如此。虽然标准US-ASCII字符通常只需要1个字节,但如果指定日文或中文字符,则需要更多字节。您想要什么,即最大字符数,无法给出,因为它取决于c