请高手解决 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,显而易见,这是字符串的编码当成字符串了。你先前测试的字符串有误导嫌疑。
你需要这样一个函数:
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);}