只有35分了~55~ “浏览栏上面传变量的时候汉字都译成"%DF%GT%GR%GH%HY%HU" 类似,我怎么把这样的字串变成汉字

miss_season 2005-01-11 06:56:07
“浏览栏上面传变量的时候汉字都译成"%DF%GT%GR%GH%HY%HU" 类似,我怎么把这样的字串变成汉字

大虾救命~~~
...全文
163 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
miss_season 2005-01-13
  • 打赏
  • 举报
回复
能举一个例子嘛,唉
蒋晟 2005-01-12
  • 打赏
  • 举报
回复
那个是UTF-8格式的网址,IMultiLanguage可以转换各种编码的字符串。
fanqing 2005-01-12
  • 打赏
  • 举报
回复
最好的方法是将字符都设置成2个字节(无论中英文),使用unnicode字符集,每次取2个字节
miss_season 2005-01-11
  • 打赏
  • 举报
回复
有没有Q呀~~ 我Q: 41656847
whwjn 2005-01-11
  • 打赏
  • 举报
回复
有意思
EnochShen 2005-01-11
  • 打赏
  • 举报
回复
方不方便把那个网站的地址给我?我LOOK LOOK
miss_season 2005-01-11
  • 打赏
  • 举报
回复
不对呀~~ 有些词只有2位 如"%B5%C0%BE%89%C8%E5%CF%C9" 是道緣儒仙 这个结果正确
miss_season 2005-01-11
  • 打赏
  • 举报
回复
你真的很厉害哦,呵~ 我只知道后面的相同,都没想到是加密过的,只知道怎么会有L,H出现
可是这是浏览器自己加得呀~~ 我怎么知道算法呢?打电话问比尔?
EnochShen 2005-01-11
  • 打赏
  • 举报
回复
飄渺之旅 = %BF%7E%C3%EC%D6%AE%C2%C3
風流三國 = %EF%4C%C1%F7%C8%FD%87%F8

而你给出的字符串除第一个以外其他的都一样,很明显是经过加密或者加了一个校检的.^o^

miss_season 2005-01-11
  • 打赏
  • 举报
回复
还有字串 "%EFL%C1%F7%C8%FD%87%F8"
哇,真的有L~~ 怎么办?
miss_season 2005-01-11
  • 打赏
  • 举报
回复
这四个字是"飄渺之旅" 怎么翻过来? 第一个怎么有个"h"???
miss_season 2005-01-11
  • 打赏
  • 举报
回复
没有呀~ 我把字贴出来
%EFh%C3%EC%D6%AE%C2%C3
EnochShen 2005-01-11
  • 打赏
  • 举报
回复
呵呵,如果繁体的话,那些字符串是不一样的啊.

比如:
简体版小疯子"%D0%A1%B7%E8%D7%D3"
繁体版小瘋子"%D0%A1%AF%82%D7%D3"

^o^
timgreen 2005-01-11
  • 打赏
  • 举报
回复
繁体一样的
miss_season 2005-01-11
  • 打赏
  • 举报
回复
楼上的代码不错,如果是繁体呢?
EnochShen 2005-01-11
  • 打赏
  • 举报
回复
在char szText[] 写入那些字符串,pBuffer就会解析成中文 ^o^
EnochShen 2005-01-11
  • 打赏
  • 举报
回复
楼主,你的字符串是自己乱写的吧?是不是这样的"%D0%A1%B7%E8%D7%D3",如果是下面的代码就可以解析,必须是16进制的字符 ^o^

//把十六进制的字符转化成数字
int HexToInt(char* pToken)
{
UINT nIndex;
int nDec[2];
//转化字符成ASCII
for(nIndex = 0;nIndex < 2;nIndex ++)
{
nDec[nIndex] = pToken[nIndex];
}

//转化小写的ASCII成大写的ASCII a->A
for(nIndex = 0;nIndex < 2;nIndex ++)
{
if(nDec[nIndex] > 97)
{
nDec[nIndex] -= 32;
}
}

//得到ASCII的真正数值
for(nIndex = 0;nIndex < 2;nIndex ++)
{
//如果是A-F
if(nDec[nIndex] > 57)
{
nDec[nIndex] -= 55;
}
//如果是0-9
else
{
nDec[nIndex] -= 48;
}
}

return nDec[0]*16 + nDec[1];
}

void test()
{
char szText[] = "%D0%A1%B7%E8%D7%D3";
char szDelimit[] = "%";
char *pToken = NULL;
UINT nBufferLen = strlen(szText)/3 + 2;
char *pBuffer = new char[nBufferLen];

pToken = strtok(szText,szDelimit);
for(UINT nIndex = 0;pToken != NULL;nIndex++)
{
pBuffer[nIndex] = HexToInt(pToken);
pToken = strtok(NULL,szDelimit);
}
pBuffer[nIndex+1] = '\0';

AfxMessageBox(pBuffer);

delete[] pBuffer;
}
fanqing 2005-01-11
  • 打赏
  • 举报
回复
如果你使用字符操作,就是取字符什么,十分有可能字节数错误,中文2字节,字母一个字节,如果你把中文弄错一个(有一个取了一个字节)那么整个将会出现乱码.
qrlvls 2005-01-11
  • 打赏
  • 举报
回复
应该是十六进制的吧,哪里来的G/T/R/H/Y/U字符,不可能的吧
例如:%E6%B1%89%E5%AD%97%E6%90%9C%E7%B4%A2
char sz[MAX_PATH] = { 0xe6, 0xb1, 0x89, 0x35, 0xad, 0x97, 0xe6, 0x90, 0x9c, 0xe7, 0xb4, 0xa2, 0x00, 0x00};
printf("%s", sz);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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