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. PHP全栈开发(二):MYSQL学习

    昨天进行了CentOS 7 下面的 LAMP搭建 今天学习一下MySQL的一些入门级操作 主要参考PHP中文网的"MySQL最新手册教程" http://www.php.cn/my ...

  2. Codeforces Round #577 (Div. 2) C. Maximum Median

    题意:就是给一n(奇数)个元素数组,可以对它的元素执行k次+1操作,递增排序,求中位数最大是多少. 那我们在排完序之后,中位数前的元素可以不管它,只要对中位数后的操作就行,我们要判断和中位数相等的元素 ...

  3. MQ系列6:消息的消费

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前 ...

  4. 追求性能极致:Redis6.0的多线程模型

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  5. Nebula Graph介绍和SpringBoot环境连接和查询

    Nebula Graph介绍和SpringBoot环境连接和查询 转载请注明来源 https://www.cnblogs.com/milton/p/16784098.html 说明 当前Nebula ...

  6. ARM TrustZone白皮书部分阅读

    嵌入式系统安全的一些解决方法及缺陷 外部硬件安全模块:在主SoC之外包含一个专用的硬件安全模块或可信元件,e.g. 手机的SIM卡.隔离仅限于可以从非易失性存储器运行的相对静态程序 内部硬件安全模块: ...

  7. php注解使用示例

    今天看到php注解的介绍文章很感兴趣,动手实际试了试挺好玩,写这篇文章记录下 php从8开始支持原生注解功能了,我们可以写个小的例子看看注解怎么玩.   先确定我们的任务目标 1.编写一个注解类rou ...

  8. 谷歌浏览器xpath获取网页按钮路径

    谷歌浏览器打开要获取的页面按下F12打开开发者工具 点击最左边的元素选择器,高亮后光标移动到对应元素框(这里只选择里层的元素,如这里要选到input级别) 点击后下方HTML会高亮显示,鼠标移动上去右 ...

  9. KatalonRecorder系列(一):基本使用+XPath元素定位

    一.简介 Katalon Recorder是基于selenium的浏览器插件,支持火狐和chrome.可以录制web上的操作并回放,还能导入导出脚本. 二.安装 可在谷歌商店或者火狐附件组件中搜索并选 ...

  10. Git配置和使用?Git你真的会用么?Git与SVN的主要区别

    1.Git环境配置    在学习Git之前,首先要知道什么是版本控制 1.1 版本控制:版本迭代.新的版本!版本管理器 版本控制是开发过程中用于管理我们的文件.目录或工程内容的修改内容,查看修改历史记 ...