linux下如何测试socket server端可以接受utf-8编码的数据?(用c语言开)发

xuexingyang 2010-11-10 05:23:10
各位达人,小弟有个问题请教各位,先谢了。
情况描述:

目的:写一个一个socket client端程序用于向socke server端发送信息(包括中英文),并接受回复和处理。
已完成:
1. 已完成英文的发送,并接受了server端发回的200 OK数据。
(比如函数如下:sendMyMSG(char *sendBuf,long sendLength))
2. 可以对回复信息进行处理。
3. 根据server端回复确认server接收utf-8编码的数据。

问题:

1. 如何向server端发送中文。
2. 我先查了下资料,发现有别人写好的编码转换的函数如下面的GB2312ToUTF8函数。
3. 而linux的默认编码是可以改变为utf-8的.(比如修改/etc/sysconfig/i18n)
4. 是不是我就可以在我的测试程序中将要发到函数sendMyMSG去的字符串之前调用下面的GB2312ToUTF8(或者类似的函数?×××ToUTF8.)我测试结果,还是不行。
我也查不到好的办法,不像Java可以直接将要发送的数据直接编码为utf-8,而不管你现在为何种编码。


附:
int GB2312ToUTF8(char* srcStr, char* desBuff, size_t desBuffLength)
{
assert(strlen(srcStr)>0);
size_t iLen = strlen(srcStr);

iconv_t cd;
cd = iconv_open("utf-8","gb2312");
assert(cd != 0);
iconv(cd, &srcStr, &iLen, &desBuff, &desBuffLength);
iconv_close(cd);
return desBuffLength;
}
...全文
446 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
justkk 2010-11-11
  • 打赏
  • 举报
回复
我也不是很懂
你现在“不再调用GB2312ToUTF8就发送是不行的”,直接发送不是utf8编码格式?
xuexingyang 2010-11-11
  • 打赏
  • 举报
回复
# file your.c:

your.c: UTF-8 Unicode C program text, with very long lines, with CRLF line terminators

还要怎么做呢?

是不是shell本身的问题,是不是shell不支持中文。要安装cce或者zhcon等工具吗?

第一次碰到这样的问题,不是很清楚。
justkk 2010-11-11
  • 打赏
  • 举报
回复
那这样的话,编码格式应该取决于你源程序的编码格式吧
用file your.c 看看呢..
xuexingyang 2010-11-11
  • 打赏
  • 举报
回复
回复ls
发送数据就是直接写在字符串里面的。
比如:char* sendMsg="你好";
然后将该数据通过socket发出去了。
justkk 2010-11-11
  • 打赏
  • 举报
回复
你发送的数据是从哪儿来的,直接写在程序中的字符串吗?
试试LANG=zh_CN.utf8
xuexingyang 2010-11-11
  • 打赏
  • 举报
回复
只用在编译的时候使用:gcc -finput-charset=GB2312 myfile.c

linux 本身就是支持utf8的。

谢谢ls的兄弟!!!
gohome520 2010-11-10
  • 打赏
  • 举报
回复
我的系统是CentOS 5.5

[s@localhost socket]$ echo $LANG
en_US.UTF-8

客户端给服务器发送汉字"测试",

ret = write(sockfd, "测试", sizeof("测试"));

服务器端收到的是utf8格式的:0xe6 0xb5 0x8b 0xe8 0xaf 0x95。每个字占三个字节。
justkk 2010-11-10
  • 打赏
  • 举报
回复
GB2312ToUTF8 貌似要求当前的字符集为gb2312
看看你当前的环境变量LANG是如何设置的?
xuexingyang 2010-11-10
  • 打赏
  • 举报
回复
我测试了:直接将系统的默认编码修改为utf-8后,不再调用GB2312ToUTF8就发送是不行的。


唉,迷惑了。。。。

期待高人。。。。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧