- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 VBA 中的 WinHttpRequest 从在线 mySQL 服务器读取数据。
Dim objHTTP As New WinHttp.WinHttpRequest
With objHTTP
.Open "POST", "http://www.dname.com/ruski/php/getNewestPID.php", True
.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=""UTF-8"""
.Send "PID=" & lngPID
.WaitForResponse
Debug.Print .ResponseText
End With
<?php
$PID = $_POST['PID'];
require_once ('config.php');
if(!$PID>0){
die("##### Error: getNewestPID failed - PID='" . $PID . "' #####");
}
$phrases = mysql_query("SELECT * FROM phrases WHERE (PID > '$PID')");
if(!$phrases){
die("##### Error: getNewestPID SELECT failed - PID=" . $PID . " - " . mysql_error() . " #####");
}
mysql_close($db);
echo "data=";
while($row = mysql_fetch_array($phrases)) {
echo $row[0] . "|" . $row[1] . "|" . $row[2] . "|" . $row[3];
}
?>
一切正常,但返回西里尔文字,如下所示:
data=21361|105||||||||||||||||||||||||||||||||||||| на ÑкÑ?ип
我的数据库使用 UTF-8 Unicode。我知道西里尔字母可以在表格和表单中使用,但在 VB 编辑器中查看垃圾内容。
我尝试过这个:
Set FileStream = CreateObject("ADODB.Stream")
FileStream.Open
FileStream.Type = 1 'Binary
FileStream.Write objHTTP.ResponseBody
FileStream.Position = 0
FileStream.Type = 2 'adTypeText
FileStream.Charset = "Windows-1251" ' https://msdn.microsoft.com/en-us/library/ms526296(v=exchg.10).aspx
strText = FileStream.ReadText
FileStream.Close
最终记录中出现垃圾:
最好的结果是:
mb_convert_encoding($row[3], "Windows-1251", "UTF-8")
Ìàëü÷èê èãðàåò íà ñêðèïêå â ñâîåé êîìíàòå。
最佳答案
这不是很优雅,但当我遇到类似问题时它对我有用。它只是一个手动从 1251 转换为 Unicode 的函数。这适用于俄语和乌克兰语,但根据您使用的语言,可能会有不同的字符,您需要将它们添加到 if 语句中。还可以考虑添加 else if ,如果找不到您要查找的字符,则会抛出问号。
Public Function AsciitoUni(base_cell As String) As String
AsciitoUni = ""
For i = 1 To Len(base_cell)
Dim s As String
Dim u As Integer
Dim a As Integer
s = Mid(base_cell, i, 1)
a = Asc(s)
If (a <= 127) Then
u = a
ElseIf (a >= 192) And (a <= 255) Then
u = a + 848
ElseIf (a = 184) Then
u = 1105
ElseIf (a = 186) Then
u = 1108
ElseIf (a = 179) Then
u = 1110
ElseIf (a = 191) Then
u = 1111
ElseIf (a = 168) Then
u = 1025
ElseIf (a = 170) Then
u = 1028
ElseIf (a = 178) Then
u = 1030
ElseIf (a = 175) Then
u = 1031
ElseIf (a = 185) Then
u = 8470
End If
AsciitoUni = AsciitoUni & ChrW(u)
Next
End Function
关于php - WinHttpRequest POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191161/
我在 VB6 中使用 WebRequest 并且我将超时设置为“5000”(5 秒),但即使在 5 秒后它也没有超时,任何帮助表示赞赏。 x: Dim objWinHTTP Set objWinHTT
下面的代码在一个文件中完美运行,但是当我尝试在另一个文件中使用它时,我收到错误“未定义用户定义的类型”并且“http As New WinHttpRequest”被突出显示。这可能是什么原因突然不起作
我正在尝试使用 VBA 中的 WinHttpRequest 从在线 mySQL 服务器读取数据。 Dim objHTTP As New WinHttp.WinHttpRequest With objH
我正在使用 AHK 脚本发送一些 POST 请求。 我正在尝试获得超时响应,以便向用户弹出一些消息。 我不知道如何使用“SetTimeouts”方法和“WaitForResponse” 见下面的代码
我正在尝试使用 vba WinHttp.WinHttpRequest 向 kigo 的 api 发出请求, 我能够发送请求,但 WinHttpRequest 更改了内容类型添加 Charset=UTF
我试图使LINK FINDER和面临2个问题 问题1(已解决)::无法获取重定向页面的URL 通过使用 WinHttp.WinHttpRequest.5.1 解决了REFERNCE LINK 问题2(
我使用的程序运行 .VBS 脚本 那么,在 VBScript 中,如何处理 WinHttpRequest 对象的 OnResponseFinished 事件? Set oHTTP = CreateOb
如果使用 VBA 和 Excel 发生此事件,我想设置超时值并捕获它。到目前为止,我尝试使用 XMLHTTP60 和 WinHttpRequest: Set XMLHTTP = CreateO
是否有内置的 .NET 类可以替代 WinHttp.WinHttpRequest 或像 WinHttp.WinHttpRequest 一样工作? 谢谢! 最佳答案 有System.Net.HttpRe
我希望使用网页上的 API,目前有一个可以在 VBA 中运行的 VB 示例,并且希望可以在 Javascript 中创建等效的方法 Set http = CreateObject("WinHttp.W
你可以看到很多人在网站上使用鼠标点击和键盘模拟在浏览器窗口或使用 IE COM 来自动化,但对于某些应用程序,你不希望你的应用程序占用数百兆字节的 RAM 并使用大量 CPU呈现网站等的权力 所以问题
我想通过 VBA 和 WinHttp 库将时间序列的多行(测量值)发布到 InfluxDB,精度以秒为单位(精度 = s)。 当发布一个测量值时,一切正常,并且可以在数据库中找到测量值。 当使用\n
代码: var WinHttpReq: OleVariant; procedure TForm1.Button1Click(Sender: TObject); begin WinHttp
我正在运行一个调用函数以从服务器检索信息的宏。我正在使用“WinHttp.WinHttpRequest.5.1”进行连接。对于我 95% 的请求返回有效结果,该宏工作正常。但另外 5% 导致了以下错误
paypalfunctions.asp and expresscheckout.asp files 我希望得到帮助,如果没有帮助,那么可以雇用精通经典 ASP 和 PayPal 的开发人员来帮助我解决
这个问题在这里已经有了答案: WinHttpRequest gzip response parsing (1 个回答) 去年关闭。 我正在使用 Excel 2007 (12.0.4518.1014)
就在我终于明白 Msxml2.XMLHTTP 和 Msxml2.ServerXMLHTTP 的区别的时候 http://support.microsoft.com/kb/290761 XMLHTTP
我很难过为什么这不起作用似乎找不到任何问题。 这是代码。 Public Const MULTIPART_BOUNDARY = "speed" Function getBalance() As Stri
如果我发送超过 12 个 VIN,我会遇到一个问题(HTTP STATUS 400 Bad Request)使用代码解码 VIN,但如果我通过粘贴到网站发送超过 100 个的列表,我会得到结果。 我正
我正在使用 WinHttpRequest.5.1 对象在 excel 365 (16.0.11328.20562) vba 脚本上发出一些 https 请求。 我知道来自服务器的证书会发生错误,因为
我是一名优秀的程序员,十分优秀!