首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请高手解决 bcb6下 unicode转ansi的有关问题

2012-04-06 
请高手解决 bcb6下 unicode转ansi的问题最近,开发了一个项目,要去采集一个网页。由于涉及到cookies的Post问

请高手解决 bcb6下 unicode转ansi的问题
最近,开发了一个项目,要去采集一个网页。由于涉及到cookies的Post问题,所以采用了IdHttp控件进行采集。

现在出现以下问题,采集回来的网页内容为:{"name":"\u52c7\u4e0d\u53ef\u6321",
这种代码,查了一下,好像说里面的中文是unicode编码。

我直接使用bcb6做以下测试,可以正常显示 成中文 勇不可挡。
  String p = "\u52c7\u4e0d\u53ef\u6321";
  returnTxt->Caption = p;

但是如果使用采集回来的内容,显示结果依然是\u52c7\u4e0d\u53ef\u6321
分析的代码如下:
String recookies;
String s = globefunction::HttpReq(url,"",&recookies); //采集
String reinfo = globefunction::FXsrc(s,"\"name\":\"",NULL,"\"",0);//分析函数
returnTxt->Caption = reinfo;

这时,returnTxt->Caption 显示的值,未进行任何改变。

请问,我应该如何进行转换呢?




[解决办法]
如果字符串的长度是8,那么字符串内容就是“勇不可挡”,如果长度达到24,显而易见,这是字符串的编码当成字符串了。你先前测试的字符串有误导嫌疑。

你需要这样一个函数:

C/C++ code
String EncodeToString(String strEncode){    wchar_t w;    WideString strResult;    strEncode = StringReplace(strEncode, "\\u", "\r\n0x", TReplaceFlags() << rfReplaceAll);    TStringList *lst = new TStringList;    lst->Text = strEncode;    for (int i = 0; i < lst->Count; i++)    {        if (lst->Strings[i].Trim().Length() > 0)        {            w = lst->Strings[i].ToIntDef(0);            strResult += WideString(w);        }    }    delete lst;    return String(strResult);} 

热点排行