在线急等~~ 在linux c++下 我想把汉字-->unicode 可是答应出来的是乱码 为何?

rwjlqn 2009-04-20 04:39:51
我做的是一个发短信的程序 中文需要转成unicode编码
目标:中文-->unicode
比如:你好吗-->4F60597D5417

我的代码打印的结果是:
inbuf:你好吗
outbuf:`O}YT //我想让它打印出4F60597D5417 不想打印出乱码 (我用ue查看了一下`O}YT 的十六进制是:60 4F 7D 59 17 54)
i:0


代码如下:
#include<iomanip>
#include<iostream>
#include<string.h>
#include<iconv.h>
#include<locale.h>
#include<stdlib.h>
//#include<easycics>

#define HG_LARGE_STR_LEN 255
using namespace std;

int testUnicode()
{

char inbuf[HG_LARGE_STR_LEN]="你好吗";
char outbuf[HG_LARGE_STR_LEN];
char* pin = inbuf;
char* pout = outbuf;

size_t inleft = strlen(pin)+1;
size_t outleft = HG_LARGE_STR_LEN;
iconv_t cd = iconv_open("ucs-2","utf-8");
if(cd == (iconv_t)-1)
return -1;
if((int)iconv(cd, &pin, &inleft, &pout, &outleft) == -1)
return -1;
iconv_close(cd);

//MEM_OBJECT::binaryToASCII((HGBYTE*)outbuf, HG_LARGE_STR_LEN-outleft, inbuf);

cout << "inbuf:" << inbuf << endl;
cout << "outbuf:" << outbuf << endl;

return 0;
}

int main(void)
{
int i = testUnicode();
cout<<"i:"<<i<<endl;

}
...全文
407 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rwjlqn 2009-04-21
  • 打赏
  • 举报
回复
大师就是大师啊
unsigned short *pUcs = (unsigned short *)outbuf;
while( *pUcs )
{
cout<<setfill('0')<<setw(4)<<hex<<*pUcs;
pUcs++;
}
这代码相当管用啊

问题解决了
本来可以提前结贴的 可是我电脑总是打不开csdn的论坛 别的网站没问题 局域网内其他同事的电脑都能打开csdn 就是我的电脑老打不开 好不容易打开 一刷新就变成400错误了 到现在也没解决

好了 该结贴了 有点晚 不好意思哈 见谅~~
「已注销」 2009-04-20
  • 打赏
  • 举报
回复
注意UTF-8和Unicode的转换即可
Dinelgua 2009-04-20
  • 打赏
  • 举报
回复
is it right?
S_zxing 2009-04-20
  • 打赏
  • 举报
回复
进来学习的,顺便帮顶~~
  • 打赏
  • 举报
回复
inbuf:你好吗

你这里读入的是什么码?

可以让 cout按unicode格式输出,还可以自己转,但是先问,它是什么码?
ltc_mouse 2009-04-20
  • 打赏
  • 举报
回复
上面理解错了,呵呵
不应该直接用 cout << "outbuf:" << outbuf << endl; 来输出转换后的unicode字符串~
你可以按unicode输出,比如

unsigned short *pUcs = (unsigned short *)outbuf;
while( *pUcs )
{
cout<<setfill('0')<<setw(4)<<hex<<*pUcs;
pUcs++;
}
ltc_mouse 2009-04-20
  • 打赏
  • 举报
回复
大小端问题?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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