[SAP ABAP开发技术总结]字符编码与解码、Unicode

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-8'
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 = ' 江正军 ' ). " 编码
xstr = convout -> get_buffer ( ). " 获取码流
WRITE : / xstr . "E6B19FE6ADA3E5869B
********** 解码
DATA : convin TYPE REF TO cl_abap_conv_in_ce .
" 创建解码对象
convin = cl_abap_conv_in_ce => create ( encoding = l_encoding input = xstr ).
DATA : str TYPE string .
CALL METHOD convin -> read " 解码
IMPORTING data = str .
WRITE : / str . " 江正军
使用CL_ABAP_CODEPAGE类进行编解码:
).
**********字符集名与内码转换
"将外部字符集名转换为内部编码
CALL FUNCTION 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
EXPORTING
external_name = 'UTF-8'
IMPORTING
sap_codepage = l_codepage.
WRITE: / l_codepage.
"等同于下面类方法
l_codepage = cl_abap_codepage=>sap_codepage( 'UTF-8' ).
WRITE: / l_codepage.
"编码
xstr = cl_abap_codepage=>convert_to(
source = '江正军'
codepage = `UTF-8` ).
WRITE: / xstr.
"解码
str = cl_abap_codepage=>CONVERT_FROM(
source = xstr
codepage = `UTF-8` ).
WRITE: / str.
4110
4110
E6B19FE6ADA3E5869B
江正军
ABAP中的特殊字符列表
cl_abap_char_utilities=>horizontal_tab — 09 TAB符
cl_abap_char_utilities=>CR_LF ———-- 0D0A 回车换行
cl_abap_char_utilities=>VERTICAL_TAB —- 0B 垂直制表符
cl_abap_char_utilities=>NEWLINE —---- 0A 换行
cl_abap_char_utilities=>FORM_FEED —--- 0C 换页
cl_abap_char_utilities=>BACKSPACE —---08 退格符
CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE-----(utf-16le')的文件头
CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_UTF8-------(utf-8)的文件头
如果是要单独取得回车或者换行(不是回车加换行),可以采用:
cl_abap_char_utilities=>CR_LF(1)
cl_abap_char_utilities=>CR_LF 1(1)
空白字符:
System.out.println((int)' ');//12288
DATA) TYPE c.
CONSTANTS: c_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
CONCATENATE 'text01' c_tab 'text02' c_tab 'text03' INTO gc_result.
Unicode字符串互转
) 这是在AIX上测试的结果。注意,SAP上使用的是Unicode码,所以为双字节,在转换为十六进制时,与服务器所在操作系统的字节顺有关(Java是与平台无关的,在任何平台上都是高字节序),从这里就可以看出Windows与Unix上的字节序不是一样的。
) 表示8个字节
x = <fs1>.
FIELD-SYMBOLS <fs3> .
"将十六进制的Unicode码转换为字符串
ASSIGN x TO <fs3> type 'C'. "C在这里是一般类型,代指字符串,而不是只一个C
WRITE:/ <fs3>.
"====通过强转
FIELD-SYMBOLS <fs4> TYPE c. "C在这里也是一般类型
ASSIGN x TO <fs4> CASTING.
WRITE:/ <fs4>.
4100420043004400
ABCD
ABCD
JAVA与ABAP中的Unicode
Java与ABAP内存存储字符时,都是以Unicode来编解码的。
注:平时我们讲的字节序是以字节为单位,字节与字节是有高低之分的,但在某个字节里是没有高低位之分的。就像下面江字那样,在低字节系统中为5F6C,而决不可能出现 F5 或 C6 之类的情况出现。
“江”字的Unicode编码为:27743(十进制),6C5F(十六进制)
从上面可以看出:Java中的Unicode编码是采用高字节序(符合人的阅读习惯),而ABAP中是采用低字节序(符合机器存储结构)(注意,可能与测试的环境有关。经测试,与测试环境确实有关系,请看下面在AIX机器上的测试结果——高字节顺序——高字节在前,低字节在后,符合人的阅读习惯,但与机器存储刚好相反——内存是从左到右字节地址越来越大,即内存前面是低字节,而后面是高字节。正是因为ABAP不像Java那样跨平台,所以在ABAP中可以通过CL_ABAP_CHAR_UTILITIES=>ENDIAN获得当前SAP所在的服务器的字节序类别;但是Java是跨平台的,在任何平台下都是采用上面的高字节序)
[SAP ABAP开发技术总结]字符编码与解码、Unicode的更多相关文章
- ABAP开发顾问必备:SAP ABAP开发技术总结
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发顾问必备:SAP ABAP开发技术总结[转载]
转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...
- 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode
原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...
- [SAP ABAP开发技术总结]内表操作
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]OPEN SQL
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]字符串处理函数、正则表达式
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- python字符编码与解码 unicode,str
解释以下几个问题: (1)python2中str和unicode是两种字符串类型,与字符编码方式是什么关系? (2)str和unicode是怎么相互转换的? (3)'\x...':'\u...', ' ...
- [SAP ABAP开发技术总结]以二进制、字符模式下载文件
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- :root
概述 选择该文档的根元素. 在HTML中,文档的根元素,和$(":root")选择的元素一样, 永远是<html>元素. 示例 设置<html>背景颜色为黄 ...
- DELPHI出现无法加载dclite50.bpl的解决办法(转)
现象: Borland Integrated Translation Environment 加载出错 解决办法: 我的电脑--->(鼠标右键)属性--->高级--->(性能)设置- ...
- Web Token JWT
基于Token的WEB后台认证机制 JSON Web Token in ASP.NET Web API 2 using Owin 翻译:Token Authentication in ASP.NET ...
- win10 python nltk安装
主要是参照http://www.tuicool.com/articles/VFf6Bza
- eclispse快捷操作
1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示搜索对话框:Ctrl+H快速O ...
- AJAX 数据库实例
AJAX 用于创建动态性更强的应用程序. AJAX ASP 实例 下面的例子将演示当用户在输入框中键入字符时,网页如何与服务器进行通信: 实例 请在下面的输入框中键入字母(A - Z): 姓名: 建议 ...
- android 使用WebView 支持播放优酷视频,土豆视频
看了很多文章和所谓的解决android WebView播放优酷,土豆等视频的办法,都是什么 setPluginsEnabled,在android 4.x之后都不好使,压根就没这函数,因为android ...
- Discuz! X2头部header.htm修改指南
相对于1.5版本,2.0版本并没有在模板机制上做太大改动,基本延续了1.5的模板机制.下面我就为和大家一起过一下X2的头部代码.希望大家对头部代码有些认识. 1.顶部的设为首页,和收藏本站.这里是可以 ...
- win7下80端口被(Pid=4)占用的解决方法
首先介绍一种网上普遍的方法,就是查找占据80端口的进程,然后关闭它就行了. 1.运行cmd,然后输入netstat -a -n -o,回车:2.查看开头几行包含0.0.0.0:80的那一行最后的pid ...
- oracle进制-10进制跟2进制互转
CREATE OR REPLACE FUNCTION NUMBER_TO_BIT(V_NUM NUMBER) RETURN VARCHAR IS V_RTN );--注意返回列长度 V_N1 NUMB ...