gto250 发表于 2010-6-16 21:14:07

_WinAPI_WideCharToMultiByte使用的困惑

本帖最后由 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格式
开始我以为是字符串中英文夹杂的问题,然后我就用了一个全中文的字符串
但是服务器接受到的也只有一半左右的字符

请问该如何解决

gto250 发表于 2010-6-17 15:53:42

顶上!!
请求帮助

yarsye 发表于 2010-6-17 16:08:56

友情帮顶 。。。

lynfr8 发表于 2010-6-17 16:21:28

tcp这一块没怎么深入学习
唯有顶顶
看哪位在这一方面有建树的帮帮楼主了

sanhen 发表于 2010-6-17 16:52:07

你的TCP函数是怎么发送的?实在过大可以分包发送的。

lin0308 发表于 2010-6-17 16:52:13

爱莫能助....

gto250 发表于 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

C.L 发表于 2010-6-20 09:06:30

服务器是自已写的代码吗?
以往发送TCP或UDP发送中文字符也是只能接收到一半,解决的办法是先将字符用StringToBinary($str,4)转换成二进制,在接收端再将二进制用BinaryToString($str,4)转换回来,这样就能接收到全中文件字符了

不知道你的情况怎么样,能不能提供个测试环境我测试一下?

gto250 发表于 2010-6-20 21:33:36

我的是直接发给飞信服务器,现在搞得只能发送英文短信,或者中文短信只有一半收的到

C.L 发表于 2010-6-21 09:33:21

哦,没用过飞信,不懂怎么回事
BTW:字符串后面加点空格,会不会有效果?

gto250 发表于 2010-6-21 10:31:40

不行,我都试了
页: [1]
查看完整版本: _WinAPI_WideCharToMultiByte使用的困惑