找回密码
 加入
搜索
查看: 3996|回复: 10

[AU3基础] _WinAPI_WideCharToMultiByte使用的困惑

  [复制链接]
发表于 2010-6-16 21:14:07 | 显示全部楼层 |阅读模式
本帖最后由 gto250 于 2010-6-17 15:52 编辑

$gfg="随b便试a试好m了fgh"
$str=_WinAPI_WideCharToMultiByte($gfg,65001)
我利用上面的代码顺利的将"随b便试a试好m了fgh"这个字串转化成了UTF-8格式
但是通过tcp发送到服务器端时,却只有一半左右的字符
服务器要求使用的是UTF-8格式
开始我以为是字符串中英文夹杂的问题,然后我就用了一个全中文的字符串
但是服务器接受到的也只有一半左右的字符

请问该如何解决
 楼主| 发表于 2010-6-17 15:53:42 | 显示全部楼层
顶上!!
请求帮助
发表于 2010-6-17 16:08:56 | 显示全部楼层
友情帮顶 。。。
发表于 2010-6-17 16:21:28 | 显示全部楼层
tcp这一块没怎么深入学习
唯有顶顶
看哪位在这一方面有建树的帮帮楼主了
发表于 2010-6-17 16:52:07 | 显示全部楼层
你的TCP函数是怎么发送的?实在过大可以分包发送的。
发表于 2010-6-17 16:52:13 | 显示全部楼层
爱莫能助....
 楼主| 发表于 2010-6-17 20:53:17 | 显示全部楼层
就上面那个字串"随b便试a试好m了fgh"
转换后就缺少字符

我打算用Delphi做个dll调用
library utf8string;

uses
System;

{$R *.RES}

function UTF8STRS(str:pchar): pchar; stdcall;export;
begin
Result :=pchar(UTF8Encode(str));
end;

exports
UTF8STRS;

begin
end.
我用这段代码生成了一个dll,供其他程序调用,编译没有问题,但是调用的时候总是出现内存错误

也有可能是编写的问题。因为不是很懂delphi
发表于 2010-6-20 09:06:30 | 显示全部楼层
服务器是自已写的代码吗?
以往发送TCP或UDP发送中文字符也是只能接收到一半,解决的办法是先将字符用StringToBinary($str,4)转换成二进制,在接收端再将二进制用BinaryToString($str,4)转换回来,这样就能接收到全中文件字符了

不知道你的情况怎么样,能不能提供个测试环境我测试一下?
 楼主| 发表于 2010-6-20 21:33:36 | 显示全部楼层
我的是直接发给飞信服务器,现在搞得只能发送英文短信,或者中文短信只有一半收的到
发表于 2010-6-21 09:33:21 | 显示全部楼层
哦,没用过飞信,不懂怎么回事
BTW:字符串后面加点空格,会不会有效果?
 楼主| 发表于 2010-6-21 10:31:40 | 显示全部楼层
不行,我都试了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 08:52 , Processed in 0.080216 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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