去掉字符中的格式

正经的董同学 2017-10-17 11:13:38
json解析带有格式的字符时会解析出错,问下怎么去掉这种格式呢
...全文
171 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
正经的董同学 2017-10-27
  • 打赏
  • 举报
回复
可能我表述有问题,具体点就是json中的一个参数是string类型,但是如果字符带有格式的话,json会解析失败.现已解决
赵4老师 2017-10-17
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
#include <locale.h>
char s[]="%26nbsp%3B%u5BF9%u65B9%u7B54%u590D";
char *p;
int i,j,r,n,v;
wchar_t w1[100];
wchar_t *pw;
void urldecode() {
    p=s;
    i=0;
    while (1) {
        r=sscanf(p,"%%%2X%n",&v,&n);
        if (r==EOF) break;
        if (r==1) {
            w1[i]=(wchar_t)v;
            p+=n;
            i++;
        } else {//r==0
            r=sscanf(p,"%%u%4X%n",&v,&n);
            if (r==EOF) break;
            if (r==1) {
                w1[i]=(wchar_t)v;
                p+=n;
                i++;
            } else {//r==0
                w1[i]=(wchar_t)p[0];
                p++;
                i++;
            }
        }
    }
}
void wstrrep(wchar_t *a,wchar_t b) {
    pw=w1;
    while (1) {
        pw=wcsstr(pw,a);
        if (pw) {
            memmove(pw+1,pw+wcslen(a),2*(wcslen(pw)-wcslen(a)+1));
            pw[0]=b;
        } else break;
    }
}
void htmldecode() {
    wstrrep(L" ",L' ');
    wstrrep(L"&",L'&');
    wstrrep(L""",L'\"');
    wstrrep(L"<",L'<');
    wstrrep(L">",L'>');
}
int main() {
    _wsetlocale(LC_ALL,L"chs");
    urldecode();
    wprintf(L"[%s]\n",w1);
    htmldecode();
    wprintf(L"[%s]\n",w1);
    return 0;
}
//[ 对方答复]
//[ 对方答复]
//
赵4老师 2017-10-17
  • 打赏
  • 举报
回复
提醒:解析json的库一般都是开源的。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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