转化俄文编码掘井及泉

最近做OWA开发,遇到很多俄文邮件,这些邮件经我们程序处理后全部显示为乱码,分析接收的数据类似下面这种类型: Elena%3CBR%3E%3CB%3ESubject%3A%3C%2FB%3E+%D0%94%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80+%0A%D1%86%D0%B5%D1%81%D1%81%D0%B8%D0%B8%3CBR%3E%3C%2FFONT%3E%3CBR%3E%3C%2FDIV%3E%0A%3CDIV%3E%3C%2FDIV%3E%0A%3CDIV+class%3DSection1%3E%0A%3CP+class   按道理说,Exchange服务器本身能够处理多语言,但是把这些数据传给Exchange后却显示乱码,没办法只能自己想办法。

看上边的那段数据,都是%号,跟URL的编码很类似,试一下就知道了,用.net C#验证一下,很简单一句话搞定

解析的结果是这样:Elena<BR><B>Subject:</B> Договор цессии<BR></FONT><BR></DIV><DIV></DIV><DIV class="Section1"><P class

首先:Decode URL编码:

//From Codeguru.

string UriDecode(const std::string & sSrc){

char * const pStart = new char[SRC_LEN];   char * pEnd = pStart;

while (pSrc < SRC_LAST_DEC)   {      if (*pSrc == '%')      {         char dec1, dec2;         if (-1 != (dec1 = HEX2DEC[*(pSrc + 1)])            && -1 != (dec2 = HEX2DEC[*(pSrc + 2)]))         {            *pEnd++ = (dec1 << 4) + dec2;            pSrc += 3;            continue;         }      }

*pEnd++ = *pSrc++;   }

// the last 2- chars   while (pSrc < SRC_END)      *pEnd++ = *pSrc++;

std::string sResult(pStart, pEnd);   delete [] pStart;   return sResult;}

然后,解码UTF8:

wstring UTF2Uni(const char* src, std::wstring &t){    if (src == NULL)     {        return L"";    }        int size_s = strlen(src);    int size_d = size_s + 10;          //?        wchar_t *des = new wchar_t[size_d];    memset(des, 0, size_d * sizeof(wchar_t));        int s = 0, d = 0;    bool toomuchbyte = true; //set true to skip error prefix.        while (s < size_s && d < size_d)    {        unsigned char c = src[s];        if ((c & 0x80) == 0)         {            des[d++] += src[s++];        }         else if((c & 0xE0) == 0xC0)  ///< 110x-xxxx 10xx-xxxx        {            WCHAR &wideChar = des[d++];            wideChar  = (src[s + 0] & 0x3F) << 6;            wideChar |= (src[s + 1] & 0x3F);                        s += 2;        }        else if((c & 0xF0) == 0xE0)  ///< 1110-xxxx 10xx-xxxx 10xx-xxxx        {            WCHAR &wideChar = des[d++];                        wideChar  = (src[s + 0] & 0x1F) << 12;            wideChar |= (src[s + 1] & 0x3F) << 6;            wideChar |= (src[s + 2] & 0x3F);                        s += 3;        }         else if((c & 0xF8) == 0xF0)  ///< 1111-0xxx 10xx-xxxx 10xx-xxxx 10xx-xxxx         {            WCHAR &wideChar = des[d++];                        wideChar  = (src[s + 0] & 0x0F) << 18;            wideChar  = (src[s + 1] & 0x3F) << 12;            wideChar |= (src[s + 2] & 0x3F) << 6;            wideChar |= (src[s + 3] & 0x3F);                        s += 4;        }         else         {            WCHAR &wideChar = des[d++]; ///< 1111-10xx 10xx-xxxx 10xx-xxxx 10xx-xxxx 10xx-xxxx                         wideChar  = (src[s + 0] & 0x07) << 24;            wideChar  = (src[s + 1] & 0x3F) << 18;            wideChar  = (src[s + 2] & 0x3F) << 12;            wideChar |= (src[s + 3] & 0x3F) << 6;            wideChar |= (src[s + 4] & 0x3F);                        s += 5;        }    }        t = des;    delete[] des;    des = NULL;        return t;}

THE END
0.中文简体在线翻译为俄语汉程网在线翻译提供实时精准的中文简体在线翻译为俄语。jvzquC41h{4iv}uep0ipo8Kcp{o0|q2EP1xv
1.使用DeepL将中文翻译成俄语简体中文 产品 平台概述 免费翻译器 DeepL API DeepL Write DeepL Voice DeepL Voice for Meetings DeepL Voice for Conversations 应用程序与集成 DeepL Pro 新: DeepL Agent 为何选择 DeepL 数据安全 质量 新: Customization Hub 辅助功能 功能 文档翻译 翻译PDF 文档 翻译Word 文档 翻译PPT 文档 翻译Excel 文件 jvzquC41yy}/fnjrn0ipo8j1vxbp|qcvqx0n8j1t{
2.智能ABC的特殊符号输入对应a:秒 b:百 c:厘 d:第 e:亿 f:分 g:个h:时 i:毫 j:斤 k:克 l:里 m:米 n:年度 p:磅 q:千 r:日 s:十 t:吨 u:微w:万 x:升 y:月 z:兆智能ABC还提供了阿拉伯数字和中文大小写数字的转换能力,可以对一些常用量词简化输入。 特殊符号、输入、粘贴 1.在Word中,在窗体最上端的jvzquC41o0972mteu0tfv8iqe1?f3<>957>50qyon
3.文明5——俄文转换中文方法文明5——俄文转换中文方法 此方法只对于打过中文汉化补丁,或者游民免安装中文硬盘年度版jvzquC41yy}/fx~q0et0c{ykenk05<968A,q?:
4.文字在线翻译–中英文在线翻译器–迅捷PDF转换器在线免费版中译英 英译中 中译日 日译中 中译韩 韩译中 汉译藏 藏译汉 中译泰 泰译中 中译俄 俄译中 繁体字转换 英文大小写转换 中文转拼音 文言文翻译 更多翻译工具 英语翻译 日语翻译 韩语翻译 维吾尔语翻译 粤语翻译 藏语翻译 俄语翻译 德语翻译 法语翻译 西班牙语翻译 泰语翻译 越南语翻译 意大利语翻译 阿拉伯jvzquC41crv/z~slkgveh7hqo1€i/ls1nktfhjs{k1
5.怎么把游戏翻译成中文,怎么把电脑游戏日文转换成中文一、金山游侠里面有个内码转换可以改部分游戏的文字(只是部分)还有针对该游戏而推出的汉化补丁。 二、Babylon 是一款来自以色列相当优秀的多国语言免费翻译软件,全球领先的字典及翻译软件Babylon还推出了中文版,并提供免费下载。支持的互译语言有:中文、英文、西班牙文、日文、德文、法文、俄文、意大利文、葡萄牙文、荷兰jvzq<84o0fozkjur0eun1mte1t{bpsncp1716B<6;0nuou
6.《电脑自动转换中文简繁字产生的问题》古籍整理中繁简字的误用问题,很大程度上是因使用电脑转换不当、又疏于校对而产生的。要解决这个问题,除了认真校对外,还有很重要的一点就是在录入文稿时,一定要使用相应的输入法。简体字用简体字输入法,繁体字用繁体字输入法。不过在实际工作中,往往难以完全做到这一点,尤其是在遇到长篇文字时,往往就使用电脑的自动转jvzquC41yy}/fxzdcp4dqv4pqvk06>:753=828
7.国际化数字转换这里不管是先转换中文String还是俄文String,结果都会抛出异常。 不管是中文环境下,还是俄文环境下,结果都会抛出异常。 所以不建议大家采用Double. parseDouble方法将String转换为Double 使用NumberFormat: 下面使用NumberFormat转换,查看语言不一致的输出结果。 为方便阅读,命名方式没有按照驼峰命名,请大家忽略。 jvzquC41dnuh0lxfp0tfv8z232?9998;1cxuklqg1fkucrqu1:779:=:8
8.第4章输入简体中文文本(简体中文Solaris用户指南)状态区—指示当前输入/转换模式的区域 查找选择区—显示多个候选词的区域 辅助窗口—用来管理输入法的工具 预编辑区 高亮度显示的(例如反白显示或带下划线)预编辑区显示被键入或转换的字符。在文本被转换成简体中文字符或符号并放入为应用程序组装的文本块之前,预编辑区保存着文本的原形。 状态区 状态区显示什么输入法模式正在起作用。在上面的jvzquC41fqit0xwcenk/exr1ef5F3B;:5/621A68/2<7:8;o9761p{=1kpjfz7mvon
9.智能ABC输入法免费下载智能ABC输入法5.30官方下载智能ABC输入法是一款功能强大、体积小巧的输入法,能帮用户实现盲打,具有全拼、简拼、混拼、音形、纯笔形等多种输入模式,输入快,有记忆功能,是进入电脑时代最早的一款打字输入法。本站提供智能ABC输入法免费下载。 智能ABC输入法免费下载版(又称标准输入法)是中文Windows3.2和Windows95/98中自带的一种汉字输入方法,jvzquC41o0~jvxsi|jokkj3pgv5tqoy145?557mvon
10.简体中文翻译成俄文,字典中文“简体中文"在免费中文——俄文词典中的翻译: апатичный, вялый.查看更多翻译和示例。jvzq<84|j0mmq|gg0eun1ƒm1tw5&G@*CG'>1'N9'DF+:5.J6'D>&CM*G8'?7'A<
11.中文网站怎么转换成中英文多语网站(自动翻译切换)那么如何将一个普通的中文网站转换成多语言网站呢?如何你是WORDPRESS网站,可直接使用WordPress 中英文多语言网站自动翻译插件,如果你是其它类型网站,可以尝试以下的方法。 方法/步骤 第一步:下载网站自动翻译JS插件,这个JS插件支持中文、英文、俄文、德文、法文等等几十个网站的语言;将JS文件上传到自己的网站主机上; jvzquC41yy}/z~jycpm{jjs0pgz0d~qw1<93<70jvsm