点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在编写一些代码来替换某些文本中的未知字符。 我在sap论坛上看到有关使用cl_abap_char_utilities => charsize来确定abap系统是否为unicode的答案。
- Unicode系统的值cl_abap_char_utilities => charsize大于1,对吗? 因此我可以使用cl_abap_char_utilities => charsize> 1作为我假设的指标。
- 非Unicode系统cl_abap_char_utilities =>具有相同逻辑的字符大小等于1吗?
这是一段代码。 这可以用Unicode设置为yes且charsize为2的unicode替换系统中的未知BEL字符07。我只是将xstring转换回字符串。 我不确定它在非unicode系统中的工作方式还是ubel_hex和uspace_hex甚至是正确的值。 任何见识将不胜感激,我只是对cl_abap_char_utilities => charsize意见不一。
数据: bel_hex(1)TYPE x VALUE'07'," bel space_hex(1)TYPE x VALUE'20'," space ubel_hex(2)类型x值'0007', uspace_hex(2)类型x值'0020', temp_string TYPE字符串, lgtxt_xstring TYPE xstring, 将TYPE REF转换为cl_abap_conv_in_ce。 temp_string ='一些带有无效BEL字符的字符串' 通话功能'SCMS_STRING_TO_XSTRING' 出口 文字= temp_string 输入 缓冲区= lgtxt_xstring。 如果cl_abap_char_utilities => charsize> 1。 在字节模式下用space_hex替换lgtxt_xstring中bel_hex的所有出现。 其他。 用字节模式中的uspace_hex替换lgtxt_xstring中的ubel_hex的所有出现。 ENDIF。
是的,关于CL_ABAP_CHAR_UTILITIES => CHARSIZE(1或2),您是对的,此测试就足够了:
您正在谈论转换为字节以进行替换,但是如果您的分析与实际情况相符,则不需要。 此外,在Unicode系统中,BEL字符U + 00B7可以有2个字节顺序,即" little endian"或" big endian",分别为" 00B7"或" B700"。 此外,使用SCMS_STRING_TO_XSTRING的方式将字符串转换为UTF-8,因此即使在Unicode系统中,BEL始终使用1个字节的" 07"进行编码。
相反,无需使用字节: p>
有关信息,所有自7.50起的系统都仅使用Unicode。
如果表STXL中有此类字符(不确定您是否在说话) 大约是同一张"长文本编辑器",也可能是其他表格),我不会修复,风险太大(值得这样做吗?),但我会调查它们在那里的原因,并问负责人。 人们自我修复。
一周热门 更多>