asp+vb.net解决调接口返回中文乱码问题
1、问题描述
涉及语言:vb,vbscript,vb.net,asp
最近在工作中碰到了这样一个问题:需要调用一个接口解析简历文件中的关键信息。直接用postman测试该接口,接口返回值没问题,但一旦在asp里面调用就会出现中文乱码的问题。
但界面接收到的返回值中文乱码
数据库入库的中文也都是乱码
2、解决方法
页面输出乱码很好解决的,只要把页面的输出编码设置为UTF-8,然后返回值设置成“二进制数据流数据”而不是“文本数据”。我用的语言是VB,VB调用接口是用WinHttp。
关于WinHttp的使用可以参考:WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)_tylm22733367的博客-CSDN博客
至于入库中文乱码问题,那是由于WinHttp接口返回的winHttp.ResponseBody是一个二进制流,因此需要把该返回的二进制流转为UTF-8编码。
具体的转换代码可以参考(不过要注意最好手动敲下来,直接复制会有点问题的):
vb winhttp post 返回的数据 含有中文的部分是乱码,怎么解决?_百度知道 (baidu.com)
我的代码:
上传文件的前端ASP
<form method="post" id="frmQty" name="frmQty" action="myUpLoadFile.asp" enctype="multipart/form-data">
<label>文件名:</label>
<input type="file" name="resume_file" id="resume_file">
<input type="submit" name="btn1" id="btn1" value="发布">
</form>
中间层处理ASP myUpLoadFile.asp
<%
'设置页面的输出编码
Response.Charset="utf-8"
'相当于java中new一个对象
Set xxx = CreateObject("xxx.wsc")
if Request.TotalBytes > 0 then
filesize = Request.TotalBytes
filedata = Request.BinaryRead(Request.TotalBytes)
contentType = Request.ServerVariables("CONTENT_TYPE")
sTargetURL = "你要调用的接口地址"
Set winHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
winHttp.SetTimeouts 10000, 10000, 120000, 60000
winHttp.Open "POST", sTargetURL, False
winHttp.setRequestHeader "Content-Type", contentType
winHttp.setRequestHeader "Content-Length", filesize
winHttp.setRequestHeader "Connection", "keep-alive"
winHttp.Send filedata
winHttp.WaitForResponse
'Response.BinaryWrite winHttp.ResponseText
Response.BinaryWrite winHttp.ResponseBody
'入库
Call xxx.AddHirePlan(6666,1,1,1,1,1,1,1,"testResume","sRequireSchool",1,"sRequireMajor","sRequireReason",
xxx.BytesToBstr(winHttp.ResponseBody,"utf-8"))
end If
%>
后端编码转换方法:xxx.wsc中
Public Function BytesToBstr(Body,Cset)
Dim Objstream
Set Objstream = CreateObject("adodb.stream")
Objstream.Type=1
Objstream.Mode=3
Objstream.Open
Objstream.Write Body
Objstream.Position=0
Objstream.Type=2
Objstream.Charset=Cset
BytesToBstr=Objstream.ReadText
Objstream.Close
Set Objstream=Nothing
End Function
3、参考资料
WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)_tylm22733367的博客-CSDN博客https://blog.csdn.net/tylm22733367/article/details/52596990vb winhttp post 返回的数据 含有中文的部分是乱码,怎么解决?_百度知道 (baidu.com)
https://zhidao.baidu.com/question/519762516325259885.html
asp+vb.net解决调接口返回中文乱码问题的更多相关文章
- SpringMVC中 解决@ResponseBody注解返回中文乱码
问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...
- Springboot使用FastJson后,接口返回中文乱码的问题解决。
哎,天下文章一大抄,到处都是一模一样的教你怎么替换掉jackson成fastjson的,可后续中文乱码网上居然没一篇文章.翻了一会源码还是写个文章共享下吧.免得后来人又浪费时间折腾. 在springb ...
- C# 请求接口返回中文乱码→???
在工作过程中,调用第三方接口出现当返回的数据是中文的时候,中文数据便会变成 这样??? 迷~ ,一开始我以为是发送成功后接收字符编码是不是不对,在换过UTF-8,Unicode,...都是不行. 最后 ...
- SpringBoot项目解决全局响应返回中文乱码问题
一.问题 新建的基于SpringBoot的MVC项目,在请响应体中,如果有中文,会显示为乱码. 二.解决方案 1.在application.properties中设置: spring.http.enc ...
- springboot2.x接口返回中文乱码
@Configuration public class GlobalConversConfiguration extends WebMvcConfigurationSupport { @Bean pu ...
- springmvc 解决@ResponseBody注解返回中文乱码
使用messageConverters <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...
- 解决SpringMVC的@ResponseBody返回中文乱码
SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...
- ajax提交 返回中文乱码问题
接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...
- 记一次@ResponseBody注解返回中文乱码的问题
Bug场景 前端AJax $.ajax({ url: '$!{request.getContextPath()}/XX/save.do', type: 'post', dataType: 'json' ...
随机推荐
- PTA2021 跨年挑战赛部分题解
7-1 压岁钱 不用说 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn ...
- 一文读懂 MySQL 索引
1 索引简介 1.1 什么是 MySQL 的索引 官方定义:索引是帮助 MySQL 高效获取数据的数据结构 从上面定义中我们可以分析出索引本质是一个数据结构,他的作用是帮助我们高效获取数据,在正式介绍 ...
- Oracle导出和导入
导出 exp exp 用户名/密码@实例名 file=导出的dmp文件存放路径 l og=导出日志存放路径 exp hr/123456@orcl file= C:\Users\Administrato ...
- spark之交集并集差集拉链
spark之交集并集差集拉链 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster(&qu ...
- Android自动化测试工具调研
原文地址:Android自动化测试工具调研 - Stars-One的杂货小窝 Android测试按测试方式分类,可分为两种:一种是传统逻辑单元测试(Junit),另外一种则是UI交互页面测试. 这里详 ...
- LcdTools如何使用PX01进行EDP屏EDID比对及设置显示EDID比对结果
PX01点EDP屏在上电过程会自动读取屏EDID,那怎么进行EDID比对呢? LcdTools打开点屏工程,在上电时序函数中先用SetCmpEDID()指令设置EDID比对值,再调用CheckEDID ...
- 11.pygame飞机大战游戏整体代码
主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...
- 二十四、PV与PVC介绍
PV 与 PVC介绍 一.概念介绍 PersistentVolume (PV) 是由管理员设置的存储,它是群集的一部分.就像节点是集群中的资源一样,PV 也是集群中的资源. PV 是Volume 之 ...
- fastjson反序列化漏洞历史CVE学习整理
fastjson 1.2.24反序列化漏洞复现 先写一个正常的使用 fastjson的web服务 我们使用 springboot创建 主要是pom.xml 里面要添加fastjson fastjson ...
- pycharm系列---基本配置
自动加入头文件 # _*_ coding: utf-8 _*_ # @Time : ${DATE} ${TIME} # @Author : xiechunhui # @Version:V 0.1 # ...