+ -
当前位置:首页 → 问答吧 → 关于编码的问题

关于编码的问题

时间:2011-12-19

来源:互联网

在我的程序中, 我指定了SOAP消息的格式为UTF8, 然后把返回得到的字符串进行decode为unicode, 但是得到的依然是乱码, 不解.  
下面是decode之前的字符串:
氓卤卤盲赂聹猫聢陋莽漏潞氓聟卢氓聫赂
这是decode之后的字符串:
山东航空公司
正确解码之后应该得到的是:山东航空公司
这是decode函数:
C/C++ code

wstring DecodeUtf8(string in) 
{ 
    wstring s(in.length(), _T(' ')); 
    size_t len = ::MultiByteToWideChar(CP_UTF8, 0, 
        in.c_str(), in.length(), 
        &s[0], s.length()); 
    s.resize(len); 
    return s; 
} 



求大神说下是肿么回事, 我程序另外一个地方用这个函数是能把返回的UTF8字符串转化为正确的UNICODE的, 我就犯迷糊了...

作者: a369601152   发布时间: 2011-12-19

可能你 in就不是UTF8

作者: jiergio   发布时间: 2011-12-19

你复制个utf8 传到in试下能不能解

作者: jiergio   发布时间: 2011-12-19

引用 2 楼 jiergio 的回复:

你复制个utf8 传到in试下能不能解

能解的 怎么会不是UTF8呢.. 我SOAP构造函数就传得UTF类型啊.
C/C++ code

DomesticAirlineSoapProxy service(SOAP_C_UTFSTRING);

作者: a369601152   发布时间: 2011-12-19

= = 木有人么

作者: a369601152   发布时间: 2011-12-19

氓卤卤盲赂聹猫聢陋莽漏潞氓聟卢氓聫赂
这个编码,肯定不是utf8的
查你的程序,看看是不是其它部分出错了

作者: keiy   发布时间: 2011-12-19

引用 5 楼 keiy 的回复:

氓卤卤盲赂聹猫聢陋莽漏潞氓聟卢氓聫赂
这个编码,肯定不是utf8的
查你的程序,看看是不是其它部分出错了

C/C++ code

DomesticAirlineSoapProxy service(SOAP_C_UTFSTRING);
    _ns2__getDomesticAirlinesTime request;
    _ns2__getDomesticAirlinesTimeResponse response;
if(service.getDomesticAirlinesTime(&request, &response) == SOAP_OK)
    {
        _ns2__getDomesticAirlinesTimeResponse_getDomesticAirlinesTimeResult* result
            = response.getDomesticAirlinesTimeResult;
        wstring Any = DecodeUtf8(result->__any);
        wstring Schema = DecodeUtf8(result->xsd__schema);
..........................



应该是没错的, 我的service在构造的时候soap_mode是用的UTF8啊,  
我有个天气预报的部分也是这样做的, 就能得到正确的中文字...

作者: a369601152   发布时间: 2011-12-19