本帖最后由 dcl1214 于 2024-6-16 10:26 编辑
不需要转换为base64,我经常搞数据库,这个问题以前碰到过,后来发现微软系统自己能消化,不需要cad来处理,主要是cad处理大数据的时候,很慢的,所以,借助微软来处理,速度很快的
- (DEFUN $xmlhttp$ (lst)
- (cond
- ((and (= (getenv "zx-xmlhttp") "1")
- (setq objHttp (vlax-create-object "Msxml2.XMLHTTP"))
- ;有缓存速度快,用这个的时候,报文头里面如果有中文,服务器不会乱码
- )
- t
- )
- ((and (= (getenv "zx-xmlhttp") "2")
- (setq objHttp (vlax-create-object "Microsoft.XMLHTTP"))
- ;这个是2.0的
- )
- t
- )
- ((and (= (getenv "zx-xmlhttp") "3")
- (setq objHttp (vlax-create-object "winhttp.winhttprequest.5.1"))
- ;这个没用过,先记录这里
- )
- t
- )
- ((and (= (getenv "zx-xmlhttp") "4")
- (setq objHttp (vlax-create-object "Msxml2.ServerXMLHTTP"))
- ;没有缓存,报文头里面如果有中文服务器会乱码
- )
- t
- )
- (t
- (setq objHttp (vlax-create-object "Msxml2.XMLHTTP"))
- ;有缓存速度快,用这个的时候,报文头里面如果有中文,服务器不会乱码
- )
- )
- objHttp
- )
如果你是搞远程通信,你可以用下面方法告知服务器,需要什么编码,如果要UTF-8的,你就告诉服务器即可
(if (not (assoc "Response-Charset" hs))
(setq hs (cons (cons "Response-Charset" "UTF8") hs))
)
可以通过下面语句获取远程服务器返回来的是啥字符集
(= (vl-catch-all-apply
'vlax-invoke-method
(list objHttp
'getResponseHeader
"Response-Charset"
)
) ;获取Response-Charset头文件的值
"UTF8"
)
可以通过下面方法将远程服务器返回来的UTF8强转为ansi
(setq value-text
(vl-catch-all-apply
'vlax-get-property
(list objHttp 'responseText)
)
)
这个语句依赖微软的对象
|