老R3(非Unicode系统),发现读取出来的数据中有编码为0的字符,存文件后发现串行,所以需要先替换

DATA: str TYPE string.
*str = zacct_12-txt+47.
str = '南京人力资源部'.
"C4CFBEA9C8CBC1A6D7CAD4B4B2BF
DATA:c(17).
FIELD-SYMBOLS: <c> TYPE x .
ASSIGN c TO <c> CASTING.
<c> = '00C4CFBEA9C8CB00C1A6D7CAD4B4B2BF00'."在 南京人力资源部 前中后加上了空字符00,方便测试
WRITE:/ c,<c>.
str = c.
PERFORM replace_null USING str.
*&---------------------------------------------------------------------*
*&      Form  replace_null
*&---------------------------------------------------------------------*
*       text R3系统中替换字符串中的空字符(编码为0的)
*----------------------------------------------------------------------*
*      -->P_STR      text
*----------------------------------------------------------------------*
FORM replace_null USING p_str TYPE string.
******************************编
  DATA: xstr TYPE xstring.
  DATA: l_codepage(4) TYPE n .
  DATA: l_encoding(20).
  CALL FUNCTION 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
    EXPORTING
      external_name = 'UTF-16BE'"不管中文还是英文,先统一编码,都转成两字节的
    IMPORTING
      sap_codepage  = l_codepage.
  l_encoding = l_codepage.
  DATA: convout TYPE REF TO cl_abap_conv_out_ce.
  convout = cl_abap_conv_out_ce=>create( encoding = l_encoding ).
  convout->write( data = p_str ).
  xstr =  convout->get_buffer( ).
******************************替
  DATA:truc_str TYPE string,
       str_len TYPE i.
  truc_str = xstr.
  str_len = STRLEN( truc_str ).
  str_len = str_len / 4 .
  DATA: cnt TYPE i.
  DATA: c4(4) .
  DATA: x2(2) TYPE x.
  DATA: i TYPE i.
  DATA: xstr2 TYPE xstring.
  DATA: off_index TYPE i.
  DO str_len TIMES.
    off_index = cnt * 4.
    c4 = truc_str+off_index(4).
    x2 = c4.
    i = x2.
    IF i = 0."如果发现是空字符,使用空格替换
      x2 = '0020'.
      CONCATENATE xstr2 x2 INTO xstr2 IN BYTE MODE.
    ELSE.
      CONCATENATE xstr2 x2 INTO xstr2 IN BYTE MODE.
    ENDIF.
    WRITE: / c4,x2,i,xstr2.
    cnt = cnt + 1.
  ENDDO.
******************************解
  DATA: convin TYPE REF TO cl_abap_conv_in_ce.
  convin = cl_abap_conv_in_ce=>create( encoding = l_encoding input = xstr2 ).
  DATA: str TYPE string.
  CALL METHOD convin->read
    IMPORTING
      data = p_str.
  WRITE: / p_str.
ENDFORM.                    "replace_null

替换空字符NULL(字符编码为0的字符)的更多相关文章

  1. Swift3.0语言教程删除字符与处理字符编码

    Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除.在NS ...

  2. [No0000137]字符编码详解

    摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等,以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2 ...

  3. 转1:Python字符编码详解

    Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...

  4. .NET Framework 中的字符编码

    字符是可用多种不同方式表示的抽象实体. 字符编码是一种为受支持字符集中的每个字符进行配对的系统,配对时使用的是表示该字符的某些值. 例如,摩尔斯电码是一种为罗马字母表中的每个字符进行配对的字符编码,配 ...

  5. Python2.7字符编码详解

    目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3.1 ASCII(初创) 1.3. ...

  6. 第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题

    1.简述位.字节的关系 位(bit)是计算机中最小的表示单元,数据传输是以“位”为单位的,1bit缩写为1b 字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B 8bit = 1Byte ...

  7. C++ tinyXML的使用和字符编码转换

    转载:http://jetyi.blog.51cto.com/1460128/761708/ 关于tinyxml使用的文档有很多(这篇文章就写的很好),这里仅提一下字符编码的转换问题,如果你不熟悉字符 ...

  8. 那些年java MD5加密字符编码的坑

    相信做过MD5加密的童鞋都遇到过字符编码的坑,一般加密出来的结果和其他人不一样都是字符编码不一致导致的,比如类文件的字符编码.浏览器的字符编码等和对方不一致,所以就需要转码统一字符. 以下是笔者转码过 ...

  9. [转]字符集、字符编码、XML中的中文编码

    字符集.字符编码.XML中的中文编码 作为程序员的你是不是对于ASCII .UNICODE.GB2321.UTF-7.UTF-8等等不时出现在你面前的这些有着奇怪意义的词感到很讨厌呢,是不是总觉得好象 ...

随机推荐

  1. JavaSE | Lambda| Optional| Stream API

    JDK1.8新特性 1.接口:默认方法. 静态方法 2.Lambda表达式和StreamAPI 3.Optional类 4.新的日期时间API Lambda表达式:为了简化代码,使得Java支持 St ...

  2. 059 SparkStream介绍

    离线计算框架:MR,hive-->对时间要求不严格 实时计算框架:SparkCore-->要求job执行时间比较快 交互式计算框架:SparkSQL,Hive,-->提供SQL操作的 ...

  3. 深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)

    赋值 python跟java中的变量本质是不一样的,Python的变量实质上是一个指针(int型或str型),而java的变量是一个可操作的存储空间. a = 123b = a print(id(a) ...

  4. scrapy 第一个案例(爬取腾讯招聘职位信息)

    import scrapy import json class TzcSpider(scrapy.Spider): # spider的名字,唯一 name = 'tzc' # 起始地址 start_u ...

  5. python3解析库lxml

    阅读目录 1.python库lxml的安装 2.XPath常用规则 (1)读取文本解析节点 (2)读取HTML文件进行解析 (3)获取所有节点 (4)获取子节点 (5)获取父节点 (6)属性匹配 (7 ...

  6. Uniform Generator

    Computer simulations often require random numbers. One way to generate pseudo-random numbers is via ...

  7. Django之Form组件(一)

    Django之Form组件(一) Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 基本操作:字 ...

  8. hexo博客pure主题解决不蒜子计数不显示的问题

    最近在建个人博客网站,想统计自己的博客页面访问量,就用到了不蒜子页面访问统计.可是遇到了糟心事,居然不显示!!! 不蒜子官网示例:两行代码,搞定计数 <script async src=&quo ...

  9. 记录初学者学习Hive时踩过的坑

    1. 缺少MySQL驱动包 1.1 问题描述 Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFound ...

  10. Xamarin Essentials教程安全存储SecureStorage

    Xamarin Essentials教程安全存储SecureStorage   在实际应用中,应用程序会将一些数据保存在用户设备中,避免用户重复操作.但是为了防止因设备丢失或者感染病毒导致数据泄漏,需 ...