找回密码
 加入
搜索
查看: 15002|回复: 47

[网络通信] utf8编码的字符串如何转为ansi编码的字符串【已解决】

[复制链接]
发表于 2021-8-1 21:44:49 | 显示全部楼层 |阅读模式
本帖最后由 fenhanxue 于 2021-8-1 22:39 编辑



如图,有一段str,是由dllcall返回的,是utf8格式的,需要转ansi格式才不会是乱码

请教有什么现成的UDF能转么,

我试过 BinaryToString(StringToBinary($str,1),4)
但是转换后的内容还是有部分乱码

我这里用来测试的$str的原文是    “测试中”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-8-1 21:46:11 | 显示全部楼层
1和4换一下试试
 楼主| 发表于 2021-8-1 21:53:17 | 显示全部楼层

1和4对换也不行



这个转码,用易语言的精易模块中的   编码_Utf8到Ansi   命令,可以顺利转码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2021-8-1 21:55:51 | 显示全部楼层
而且感觉 dll返回的原始乱码,au3和易语言返回的好像还不一样:
au3返回的是:娴嬭瘯涓?
易语言返回的是:娴嬭瘯涓??
发表于 2021-8-1 21:58:22 | 显示全部楼层
我觉得你把文件打包一下发上来,会更快一些。
 楼主| 发表于 2021-8-1 22:08:36 | 显示全部楼层
haijie1223 发表于 2021-8-1 21:58
我觉得你把文件打包一下发上来,会更快一些。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-8-1 22:18:30 | 显示全部楼层
BinaryToString(StringToBinary($Str, 1), 4)
返回的不就是正确结果么
发表于 2021-8-1 22:36:43 | 显示全部楼层
#PRE_UseX64=n
Local $hDLL = DllOpen("PsyQrDcd.dll")
Local $aRet = DllCall($hDLL, "int", "DecodePictureFile", "str", @ScriptDir & '\test.jpg')
Local $tData = DllStructCreate('byte[1024]')
Local $buffer = DllStructCreate('ptr')
DllStructSetData($buffer, 1, DllStructGetPtr($tData))
Local $aStr = DllCall($hDLL, "int", "GetDecodeData", "int", $aRet[0] - 1, 'ptr', DllStructGetPtr($buffer))
MsgBox(0,0,BinaryToString(DllStructGetData($tData, 1), 4))
DllClose($hDLL)
发表于 2021-8-1 22:56:06 | 显示全部楼层
#PRE_UseX64=nLocal $hDLL = DllOpen("PsyQrDcd.dll")
Local $aRet = DllCall($hDLL, "int", "DecodePictureFile", "str", @ScriptDir & '\test.jpg')
Local $aStr = DllCall($hDLL, "ptr", "GetDecodeDataString", "int", $aRet[0] - 1)
Local $tData = DllStructCreate('byte[1024]',$aStr[0])
MsgBox(0,0,BinaryToString(DllStructGetData($tData, 1), 4))
DllClose($hDLL)

 楼主| 发表于 2021-8-1 22:56:07 | 显示全部楼层

byte[1024]  中的1024是不是代表允许返回的最大字节数是1024?这个数字是不是也可以改成别的数字的?

DllCall($hDLL, "int", "GetDecodeData", "int", $aRet[0] - 1, 'ptr', DllStructGetPtr($buffer))
中最后加的 'ptr', DllStructGetPtr($buffer) 这个用法哪里有具体的文字说明么,帮助文件里好像没看到这个写法,感觉换个dll可能又不会了
发表于 2021-8-1 22:57:30 | 显示全部楼层
fenhanxue 发表于 2021-8-1 22:56
byte[1024]  中的1024是不是代表允许返回的最大字节数是1024?这个数字是不是也可以改成别的数字的?

...

不用换,够用了。
用9楼的代码吧,写法相对简单。
发表于 2021-8-2 09:51:48 | 显示全部楼层
haijie1223 发表于 2021-8-1 22:57
不用换,够用了。
用9楼的代码吧,写法相对简单。

太好了,解决我的问题。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-8-2 10:02:02 | 显示全部楼层

请教,要读取图片文字如何修改?
发表于 2021-8-2 11:14:43 | 显示全部楼层
本帖最后由 yohoboy 于 2021-8-2 11:17 编辑
chzj589 发表于 2021-8-2 10:02
请教,要读取图片文字如何修改?

版上有QR_CODE範例,先行產生QR_CODE圖片後再用這範例讀取,或是直接由線上製作,然後用
PRT_SCR鍵,再開啟畫圖程式,黏貼後再剪切QR_CODE圖形,另存新檔,如範例的 TEST.JPG 即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-8-2 11:43:53 | 显示全部楼层
yohoboy 发表于 2021-8-2 11:14
版上有QR_CODE範例,先行產生QR_CODE圖片後再用這範例讀取,或是直接由線上製作,然後用
PRT_SCR鍵,再 ...

我的意思是读取图片文字,不是读取二维码图片文字。生成二维码图片我知道。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:08 , Processed in 0.077673 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表