当前位置: 首页 > news >正文

XML Encoding = ‘GBK‘ after STRANS,中文乱码

最近帮同事处理了一个中信银行银企直连接口的一个问题,同事反馈,使用STRANS转换XML后,encoding始终是’utf-16’,就算指定了GBK也不行。尝试了很多办法始终不行,发到银行的数据中,中文始终是乱码。
在这里插入图片描述
Debug使用HTML视图看报文时也可以看到中文是乱码。
在这里插入图片描述

在这里插入图片描述

解决方案:

使用cl_sxml_string_writer=>create创建一个GBK编码的对象 ,用来做为STRANS的结果,最重要的是直接发转了编码后的XSTRING过去,不要 转STRING。因为我们的程序是UNICODE的,只要转成STRING,中文就会变成乱码。
返回的结果也一样,看下XSTRING,可以正常显示,如果直接转成STRING就也会变乱码。
在这里插入图片描述

主要代码:

DATA: lv_url     TYPE string.DATA: lo_xml TYPE REF TO cl_sxml_string_writer.
DATA: x_xml TYPE xstring.
DATA: jsonstr TYPE  string.
DATA:  xmlstr TYPE string.lo_xml = cl_sxml_string_writer=>create(  encoding = 'GBK'no_empty_elements = 'X'  ).TRY .CALL TRANSFORMATION zqbtest_sample31SOURCE header =  header[]item = item[]RESULT XML lo_xml.CATCH cx_st_error INTO lo_oref .lv_msg  = lo_oref->get_text( ) .WRITE: / 'Error message:',lv_msg.
ENDTRY.x_xml = lo_xml->get_output( ).lv_url = 'http://192.168..:'.cl_http_client=>create_by_url(
EXPORTINGurl                = lv_url
IMPORTING
client               = DATA(lo_http_client)
EXCEPTIONSargument_not_found = 1plugin_not_active  = 2internal_error     = 3OTHERS             = 4 ).lo_http_client->propertytype_logon_popup = lo_http_client->co_disabled.CALL METHOD lo_http_client->request->set_content_typeEXPORTINGcontent_type = 'text/xml; charset=GBK'.
CALL METHOD lo_http_client->request->set_method( 'POST' ).CALL METHOD lo_http_client->request->set_dataEXPORTINGdata = x_xml.lo_http_client->send(
EXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2 ).IF sy-subrc <> 0."操作失败,获取失败原因lo_http_client->get_last_error( IMPORTING message = DATA(lv_msg1) ).EXIT.
ENDIF.lo_http_client->receive(
EXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3 ).
IF sy-subrc <> 0 ."操作失败,获取失败原因lo_http_client->get_last_error( IMPORTING message = lv_msg ).EXIT.
ENDIF.DATA(response) = lo_http_client->response->get_data( ).
*  ev_response = response.CALL METHOD lo_http_client->close.

相关文章:

XML Encoding = ‘GBK‘ after STRANS,中文乱码

最近帮同事处理了一个中信银行银企直连接口的一个问题&#xff0c;同事反馈&#xff0c;使用STRANS转换XML后&#xff0c;encoding始终是’utf-16’,就算指定了GBK也不行。尝试了很多办法始终不行&#xff0c;发到银行的数据中&#xff0c;中文始终是乱码。 Debug使用HTML视图…...

C 语言通用MySQL 功能增删查改功能.

前提条件&#xff1a;Ubuntu 22.04.4 LTS、MSQL 8数据库 并且已经安装MySQL 8 开发库。如果没有安装&#xff0c;可以查考&#xff1a;C 语言连接MySQL数据库 项目要求: 1、完成MySQL数据库增删改查通用功能封装 2、编辑makefile 文件实现项目动态更新和快速编译 项目结构…...

Java学习 - MySQL表 增减删查

建表 按照DDL练习&#xff0c;先创建student表和home表 插入【增】 向student表中同时插入三个新的字段【1,Alice,f,15353535353】【2,Bob,m,13646464646】【3,Jack,m,13745908686】 INSERT INTO student(id,name,gender,phone) VALUES(1,Alice,f,15353535353),(2,Bob,m,1364…...

力扣SQL50 有趣的电影 简单查询

Problem: 620. 有趣的电影 Code select * from cinema where id % 2 1 and description ! boring order by rating desc;...

01. Java并发编程简介

1. 前言 大家好&#xff0c;本节我们来一起学习 Java 并发编程的核心原理。 作为本专题的第一个小节&#xff0c;我们先来了解下什么是并发编程&#xff0c;以及学习并发编程的必要性&#xff0c;及学习过程应该注意的事项。 下面&#xff0c;我们先了解一下 Java 并发编程。…...

使用Node.js+Express开发简单接口

Node.js 和 Express 是非常流行的组合&#xff0c;用于开发快速、高效的 web 服务器和 API。下面是一个基础教程&#xff0c;介绍如何使用 Node.js 和 Express 开发一个简单的 API。 1. 安装 Node.js 和 npm 首先&#xff0c;确保您已经安装了 Node.js 和 npm&#xff08;Nod…...

【Python】使用OpenCV特征匹配检测图像中的【特定水印】

如果没有方向 往哪里走都是前方 做自己的光 不需要多亮 曾受过的伤 会长出翅膀 大雨冲刷过的天空会更加明亮 流过泪的眼睛也一样 做自己的光 悄悄的发亮 逆风的方向 更容易飞翔 世界怎样在于你凝视它的目光 那未曾谋面过的远方 或许就在身旁 &#x1f3b5…...

基于 Clang和LLVM 的 C++ 代码静态分析工具开发教程

基于 Clang和LLVM 的 C 代码静态分析工具开发教程 简介 静态代码分析是一种在不实际运行程序的情况下对源代码进行分析的技术。它可以帮助开发者在编译之前发现潜在的错误、安全漏洞、性能问题等。 在 C 开发中&#xff0c;有几种常用的静态代码分析工具&#xff0c;它们可以…...

Mathtype与word字号对照+Mathtype与word字号对照

字体大小对照表如下 初号44pt 小初36pt 一号26pt 小一24pt 二号22pt 小二18pt 三号16pt 小三15pt 四号14pt 小四12pt 五号10.5pt 小五9pt 六号7.5pt 小六6.5pt 七号5.5pt 八号5pt 1 保存12pt文件 首选选择第一个公式&#xff0c;将其大小改为12pt 然后依次选择 “预置”—…...

PHP 8.4有哪些新功能值得关注

属性钩子&#xff08;Property Hooks&#xff09; 允许开发者为每个属性定义自己的get和set钩子&#xff0c;以在属性访问前后添加自定义逻辑。属性钩子通过__get()和__set()方法实现&#xff0c;类似于其他编程语言&#xff08;如Kotlin、C#和Swift&#xff09;中的属性访问器…...

PyCharm新手入门

前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook&#xff0c;Jupyter Notebook简单易用&#xff0c;可以用来练习代码编写&#xff0c;但是实际生产开发环境使用这个工具是远远不够用的&#xff0c;因为实际软件开发中需要软件调试…...

[Linux] 系统管理

全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表...

Xcode无法使用设备:Failed to prepare the device for development

问题&#xff1a; Xcode无法使用设备开发&#xff0c;失败报错如下&#xff1a; Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need…...

AWS无服务器 应用程序开发—第十二章 AWS Step Functions

AWS Step Functions 是一种服务,用于协调和管理分布式应用程序中的多个 AWS 服务和 Lambda 函数。它通过创建有状态的工作流来简化和自动化应用程序的各种工作流程,使得复杂的业务逻辑可以以可管理和可调试的方式实现。 主要功能和特点: 状态机定义: 使用 JSON 或 Amazo…...

Linux tcpdump详解

目录 前言&#xff1a;BPF伯克利包过滤器介绍1.BPF语法&#xff08;tcpdump语法&#xff09;2.逻辑运算符3.常用的原子条件1. 协议相关的原子条件2. 地址相关的原子条件3. 端口相关的原子条件4. 网络层和链路层(mac地址&#xff09;原子条件5. 广播和多播6. VLAN 相关的原子条件…...

vue2实现打印功能(vue-print-nb的实现)

实现效果&#xff1a; 引入插件 npm install vue-print-nb --save import Print from vue-print-nb Vue.use(Print) <div ref"printTest" id"printTest"><div style"text-align: center; page-break-after: always"><div style…...

某全国增值税发票查验平台 接口JS逆向

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 本文的验证码网址如下&#xff0c;使用base64解码获得 aHR0cHM6Ly9pbnYtdmVyaS5jaGluYXRheC5nb3YuY24v 这个平台功能没什么好说的&#xff0c;就是发票查验&am…...

前端练习小项目——视觉冲击卡片

前言&#xff1a; 前言&#xff1a;在学习完HTML和CSS之后&#xff0c;我们就可以开始做一些小项目了&#xff0c;本篇文章所讲的小项目为——视觉冲击卡片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&a…...

从0到1:手动测试迈向自动化——手机web应用的自动化测试工具

引言&#xff1a; 在当今移动互联网时代&#xff0c;手机web应用已经成为人们生活中不可或缺的一部分。为了保证手机web应用的质量和稳定性&#xff0c;自动化测试工具变得十分重要。本文将介绍手机web应用自动化测试工具的选择和使用&#xff0c;提供一份超详细且规范的指南&a…...

磁盘未格式化:深度解析、恢复策略与预防措施

一、磁盘未格式化的定义与现象 在计算机存储领域&#xff0c;磁盘未格式化通常指的是磁盘分区或整个磁盘的文件系统信息出现丢失或损坏的情况&#xff0c;导致操作系统无法正确读取和识别磁盘上的数据。当尝试访问这样的磁盘时&#xff0c;系统往往会弹出一个警告框&#xff0…...

为持续集成流水线集成智能代码评审利用taotoken多模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为持续集成流水线集成智能代码评审利用Taotoken多模型能力 在DevOps实践中&#xff0c;持续集成&#xff08;CI&#xff09;流水线…...

从DP-V0到DP-V2:一文讲透Profibus-DP三大版本的核心差异与工业现场选型建议

从DP-V0到DP-V2&#xff1a;Profibus-DP三大版本的核心差异与工业现场选型指南 在工业自动化领域&#xff0c;实时通信协议的选型往往直接决定生产线的响应速度、诊断能力和系统扩展性。作为制造业自动化系统中应用最广泛的现场总线之一&#xff0c;Profibus-DP历经三次重大版本…...

如何高效清理重复图片?AntiDupl.NET智能去重工具详解

如何高效清理重复图片&#xff1f;AntiDupl.NET智能去重工具详解 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在数字资产管理中&#xff0c;重复文件清理已成为提升…...

汉高2026年第一季度实现稳健有机销售增长

美通社消息&#xff1a;汉高公布了2026年第一季度的销售额&#xff0c;约为50亿欧元&#xff0c;有机(即根据汇率和收购/撤资进行调整后)销售额实现1.7%的稳健增长。两大业务部门均拉动业绩增长&#xff0c;销量与价格均实现正向增长。第一季度欧洲地区的有机销售下降3.4%。在印…...

AI模型评估资源精选:从标准基准到定制化实践指南

1. 项目概述&#xff1a;为什么我们需要一个AI评估资源精选集&#xff1f;如果你最近也在折腾大语言模型&#xff0c;无论是想自己微调一个&#xff0c;还是想评估市面上哪个模型更适合你的业务场景&#xff0c;大概率会遇到一个头疼的问题&#xff1a;评估标准太多了&#xff…...

为团队虚拟机开发环境统一配置Taotoken CLI工具

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为团队虚拟机开发环境统一配置Taotoken CLI工具 在团队协作的软件开发项目中&#xff0c;虚拟机&#xff08;VM&#xff09;是常见…...

用surf( )函数绘制三维曲面图

在“用plot3( )函数绘制三维曲线图”中&#xff0c;实现了三维曲线的绘制&#xff0c;得到了一个类似面包圈形状的旋转曲面&#xff0c;很喜欢这个造型&#xff0c;就想到是不是可以直接绘制出曲面&#xff0c;而不只是用曲线方式绘制出看起来像曲面的图形。一看参考书&#xf…...

基于多智能体架构的AI股票分析系统PRISM-INSIGHT部署与实战

1. 项目概述&#xff1a;一个由13个AI智能体驱动的股票分析与交易系统如果你对AI如何应用于金融投资感兴趣&#xff0c;或者正在寻找一个能自动分析市场、生成专业报告甚至执行交易的开源工具&#xff0c;那么PRISM-INSIGHT值得你花时间深入了解。这不是一个简单的数据可视化工…...

产品兼容性实战:硬件与软件设计的平衡艺术与工程策略

1. 产品兼容性&#xff1a;一个永恒的工程与商业困境在硬件开发&#xff0c;尤其是数据采集、测试测量这类领域里&#xff0c;产品经理和工程师们几乎每天都在面对一个看似无解的难题&#xff1a;新产品的功能要向前狂奔&#xff0c;但老用户的兼容性需求却像一根锚&#xff0c…...

Loop:基于Swift开发的macOS窗口管理框架解决方案

Loop&#xff1a;基于Swift开发的macOS窗口管理框架解决方案 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在macOS桌面环境中&#xff0c;多窗口管理一直是效率工作流的关键瓶颈。传统的手动拖拽操作…...