我在将unicode数据转换为国家字符时遇到问题。 当我使用国家函数将Unicode数据转换为国家时,在字符串后面会附加一些像@这样的垃圾字符。
E.g Ws-unicode pic X(200) Ws-national pic N(600)
- 让Ws-Unicode中的值为これらの変更は。从java结束。
将国家(Ws-unicode,1208)的国家功能移至Ws-national。
- 转换后的价值就像これらの変更は@。
我不想在转换后添加额外的@字符。
请帮我找出可能的解决方案,我试图取代N' @'使用inspect子句的空间。 它运行良好,但在某些特定情况下失败,例如我们在用户端输入@。在这种情况下,正版@也转换为空间。
答案 0 :(得分:3)
下面是我用来将EBCDIC转换为UTF的代码片段。在我捕获字符串长度之前,我还得到了@ symbols:
STRING
FUNCTION DISPLAY-OF (
FUNCTION NATIONAL-OF (
WS-EBCDIC-STRING(1:WS-XML-EBCDIC-LENGTH)
WS-EBCDIC-CCSID
)
WS-UTF8-CCSID
)
DELIMITED BY SIZE
INTO WS-UTF8-STRING
WITH POINTER WS-XML-UTF8-LENGTH
END-STRING
SUBTRACT 1 FROM WS-XML-UTF8-LENGTH
此代码的作用是将EBCIDIC字符串的UTF8表示字符串转换为另一个变量。 WITH POINTER子句将捕获字符串+ 1的新长度(+ 1,因为指针在字符串结束后定位到下一个位置)。
使用此方法,您应该能够准确知道第二个字符串的长度,并使用具有确切长度的字符串。
那应该删除不需要的@s。
修改强>
有一件事我忘了提及,就我而言,在查看大型机上的实际十六进制时,@符号实际上是EBCDIC低值
答案 1 :(得分:-1)
使用反向检查并在第一次出现@
后停止