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解决调接口返回中文乱码问题的更多相关文章

  1. SpringMVC中 解决@ResponseBody注解返回中文乱码

    问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...

  2. Springboot使用FastJson后,接口返回中文乱码的问题解决。

    哎,天下文章一大抄,到处都是一模一样的教你怎么替换掉jackson成fastjson的,可后续中文乱码网上居然没一篇文章.翻了一会源码还是写个文章共享下吧.免得后来人又浪费时间折腾. 在springb ...

  3. C# 请求接口返回中文乱码→???

    在工作过程中,调用第三方接口出现当返回的数据是中文的时候,中文数据便会变成 这样??? 迷~ ,一开始我以为是发送成功后接收字符编码是不是不对,在换过UTF-8,Unicode,...都是不行. 最后 ...

  4. SpringBoot项目解决全局响应返回中文乱码问题

    一.问题 新建的基于SpringBoot的MVC项目,在请响应体中,如果有中文,会显示为乱码. 二.解决方案 1.在application.properties中设置: spring.http.enc ...

  5. springboot2.x接口返回中文乱码

    @Configuration public class GlobalConversConfiguration extends WebMvcConfigurationSupport { @Bean pu ...

  6. springmvc 解决@ResponseBody注解返回中文乱码

    使用messageConverters <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...

  7. 解决SpringMVC的@ResponseBody返回中文乱码

    SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...

  8. ajax提交 返回中文乱码问题

    接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...

  9. 记一次@ResponseBody注解返回中文乱码的问题

    Bug场景 前端AJax $.ajax({ url: '$!{request.getContextPath()}/XX/save.do', type: 'post', dataType: 'json' ...

随机推荐

  1. KVM导入Ubuntu Cloud 镜像创建虚机及调整磁盘大小

    Ubuntu Cloud Images Ubuntu官网会给各种公有云平台提供cloud镜像, 例如AWS, MS Azure, Google Cloud, 以及本地虚机环境例如 QEMU, VMwa ...

  2. JS---HelloWorld

    1.功能效果图 2.代码实现 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. 齐博X1模板页面之间的继承关系

    本节说明下模板页面间的继承 我们在前面建立了一个公共布局模板,并且利用{block name=xxx}...{/block}分割了三个部分区块 本节我们来看下模板之前的继承如何实现,首先我们建立一个i ...

  4. 齐博x2是什么?

    齐博x2是什么? 齐博x2是齐博x1的延申版本. 对小程序全方位加强

  5. 你真的会使用Typora吗?

    你真的会使用Typora吗? 标题 一级标题:# 空格+内容 二级标题:## 空格+内容 字体 加粗:内容两边各加两个*号 你真美! 斜体:内容两边各加一个*号 你真帅! 删除线:两边各加两个~号(波 ...

  6. Linux系统文件与启动流程

    Linux系统文件与启动流程 /etc初始化系统重要文件 /etc/sysconfig/network-scripts/ifcfg-eth0:网卡配置文件 /etc/resolv.conf:Linux ...

  7. miniconda使用

    基本指令 conda create -n xxx python=3.7 // 创建Python3.7的名为xxx虚拟环境 conda env list // 显示所有的虚拟环境 conda activ ...

  8. Linux学习环境搭建流程

    Linux学习环境搭建 Vmware安装 VMware下载:https://www.vmware.com/go/getworkstation-win 运行安装程序,该重启安装驱动就重启,不需要就下一步 ...

  9. 安装harbor仓库

    1.安装docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-c ...

  10. .NET 7 的 AOT 到底能不能扛反编译?

    一:背景 1.讲故事 在B站,公众号上发了一篇 AOT 的文章后,没想到反响还是挺大的,都称赞这个东西能抗反编译,可以让破解难度极大提高,可能有很多朋友对逆向不了解,以为用 ILSpy,Reflect ...