ABAP 里文件操作涉及到中文字符集的问题和解决方案

零基础 ABAP 学习教程系列文章的目录

  • ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍

  • ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别

  • ABAP 标准培训教程 BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素

  • ABAP 标准培训教程 BC400 学习笔记之四:ABAP 编程语言的数据类型

  • ABAP 标准培训教程 BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号

ABAP 基础知识

  • 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧

  • ABAP function module 的使用

  • ABAP subroutine 的定义和使用

  • ABAP 中的变量和常量

  • ABAP 编程语言中的系统字段(System Fields)

  • 什么是 ABAP Field Symbol

  • ABAP 引用类型介绍

  • 最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍

  • 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)

  • 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)

  • 用 ABAP 读取本地文本文件内容

  • 26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据

  • ABAP 如何解析 JSON 数据

  • 如何从本地文件里拷贝某个 ABAP 类到 SAP 系统

  • 面向对象的 ABAP 编程初探 - 什么是类,实例,和 Public 方法

  • SAP ABAP 报表的用户输入功能

  • 使用 ABAP 事物码 SM59 创建 Destination 来读取外网的数据

  • 通过一个具体的例子,讲解 SAP BDC 技术的使用步骤

  • 从解读 BDC 自动生成的代码谈起,讲解 SAPGUI 的程序组成部分

  • 如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储

  • 如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称

  • 一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤

  • SAP ABAP 字符串变量容易疏忽和混淆的一些知识点

  • SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍

  • 授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储

  • SAP ABAP 系统进行数据库表查询的几种常用方法

  • 如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求

  • 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧

  • 如何使用 saplink 安装其他网站上提供的 ABAP 程序

  • ABAP 报表中如何给报表的输入参数增添 F4 Value Help

  • ABAP 报表中如何以二进制方式上传本地文件

  • ABAP 里文件操作涉及到中文字符集的问题和解决方案

  • 更多文章正在写作中

Office 专题

  • 用 ABAP 新建本地 Excel 文件并写入数据

  • 如何使用 ABAP 创建包含不同字体大小的 Word 文档

  • 更多文章正在写作中

ALV 开发专题

  • 27 行代码开发一个最简单的 SAP ALV 报表
  • 48 行代码给 ABAP ALV 报表的数据行增添颜色效果
  • 77 行代码实现ABAP ALV 中的双击事件处理
  • 更多文章正在写作中

更多文章正在写作中

我们在实际项目特别是一些系统集成项目中,经常遇到需要接收远端发送过来的二进制流,并进行解析的场景。这个二进制流的内容,可能是一些二进制文件,比如 PDF,JPG 等格式的文件,也可能是文本文件。对于文本文件来说,我们需要将二进制流,重新还原成用户可读的文本。这就是本文要着重讨论的话题。

在开始本步骤的学习之前,请大家务必先完成前置章节的学习:

ABAP 报表中如何以二进制方式上传本地文件

这个前置章节,将文本文件,以二进制的方式上传到 ABAP 服务器上,来模拟一个来自远端的内容提供者(Content Provider) 提供的二进制流,类型为 xstring. 这些二进制流的实际内容,是一些包含中文字符的文本,本文我们的任务就是,把这些二进制流,重新转换回用户可读的文本,然后打印出来。

我们新建一个文本文件,输入一个汉字 ,文件名另存为 汪-utf8.txt, encoding 选择 UTF-8.

这个文件的大小显示为 3 个字节。这是符合我们期望的行为,因为 UTF-8 是 Unicode 的一种实现方式,而一个汉字的 Unicode 值的范围是 0X4E00 到 0x9FA5,如果采取 UTF-8 编码,需要 3 个字节。

下面我们将会在 ABAP 代码里,针对包含了这个中文字符的文本文件,进行各种操作。

详细介绍请看这篇文章。

总结

在使用 ABAP 进行包含到中文字符的文件操作时,首先一定要明确当前中文字符,是根据哪一个字符集进行编码,然后从 ABAP 数据库表 TCP00 里找到该字符集在 ABAP 系统中的编号,确保包含中文内容的二进制流,同传入的 ABAP Encoding 值相匹配,这样就一定能得到正确的处理结果。

你可能感兴趣的:(ABAP 里文件操作涉及到中文字符集的问题和解决方案)