在每一个Json Cpp自带*.cpp文件头加上:

  1. #include "stdafx.h"

将Json Cpp对自带的头文件的引用修改为单引号方式,例如json_reader.cpp原始代码为:

  1. #include <json/reader.h>
  2. #include <json/value.h>
  3. #include <utility>
  4. #include <cstdio>
  5. #include <cassert>
  6. #include <cstring>
  7. #include <iostream>
  8. #include <stdexcept>

修改后(注意我引用路径的不同):

  1. #include "stdafx.h"
  2. #include "reader.h"
  3. #include "value.h"
  4. #include <utility>
  5. #include <cstdio>
  6. #include <cassert>
  7. #include <cstring>
  8. #include <iostream>
  9. #include <stdexcept>

定位到json_reader.cpp第87行,将代码修改为如下:

  1. else if (cp <= 0xFFFF)
  2. {
  3. // add by sam BEGIN
  4. if((cp>=0x4E00 && cp<=0x9FA5)||(cp>0x9F00 && cp<0xFA2D))
  5. {
  6. wchar_t src[]={};
  7. char dest[]={};
  8. src[]=static_cast<wchar_t>(cp);
  9. std::string curLocale=setlocale(LC_ALL,NULL);
  10. setlocale(LC_ALL,"chs");
  11. wcstombs_s(NULL,dest,,src,);
  12. result = dest;
  13. setlocale(LC_ALL,curLocale.c_str());
  14. }
  15. else
  16. {
  17. result.resize();
  18. result[] = static_cast<char>(0x80 | (0x3f & cp));
  19. result[] = 0x80 | static_cast<char>((0x3f & (cp >> )));
  20. result[] = 0xE0 | static_cast<char>((0xf & (cp >> )));
  21. }
  22. // add by sam END
  23. }

使用JsonCpp例子:

JSON代码如下

  1. {
  2. "function":"add",
  3. "host":"localhost",
  4. "port":8080,
  5. "method":"doUserAdd",
  6. "varname":"UserName"
  7. "varvalue":"麦兜"
  8. }

C++代码如下

  1. #include <string>
  2. #include "Json.h"
  3. ...
  4. using namespace std;
  5. ...
  6. string strHost = root["host"].asString();
  7. int strPort = root["port"].asInt();
  8. string strMethod = root["method"].asString();
  9. string strFunc = root["function"].asString();
  10. string strVarName = root["varname"].asString();
  11. string strVarValue = root["varvalue"].asString();

Json CPP 中文支持与入门示例的更多相关文章

  1. 移动开发之浅析cocos2d-x的中文支持问题

    题记:这阵子一直在学习cocos2d-x,其跨平台的特性确实让人舒爽,引擎的框架概念也很成熟,虽然相应的第三方工具略显单薄,但也无愧是一件移动开发的利器啊,有兴趣的朋友有时间就多了解吧. 使用引擎的过 ...

  2. 使用XStream是实现XML与Java对象的转换(1)--简介及入门示例

    一.简单介绍 XStream是thoughtworks开发的开源框架,用于实现XML数据于Java对象.Json数据的转换.它不需要schema或其他的mapping文件就可以进行java对象和xml ...

  3. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  4. 1.【转】spring MVC入门示例(hello world demo)

    1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...

  5. [转]php返回json数据中文显示的问题

    转自 : http://blog.csdn.net/superbirds/article/details/8091910 解决方法:   <?php    function Notice(){  ...

  6. 解决Boost.Regex对中文支持不好的问题

    解决Boost.Regex对中文支持不好的问题 - k.m.Cao - 博客频道 - CSDN.NET 解决Boost.Regex对中文支持不好的问题 k.m.Caov0.1   问题的提出: Boo ...

  7. [置顶] Xamarin android如何调用百度地图入门示例(一)

    在Xamarin android如何调用百度地图呢? 首先我们要区分清楚,百度地图这是一个广泛的概念,很多刚刚接触这个名词"百度地图api",的确是泛泛而谈,我们来看一下百度地图的 ...

  8. activiti5.14版本在线流程设计器的国际化中文支持

    参考了前辈的一些国际化支持做法,加上自己对流程的一些理解,做了activiti5.14版本的国际化支持.发现有若干bug,比如属性设置弹出窗口里的grid里的下拉列表不支持显示中文(要修改oryx.d ...

  9. 为QtCreator项目模板添加自动中文支持

    每用QtCreator创建一个Qt项目时都要为它添加中文支持,比如qt4: 就要在main.cpp里添加 QTextCodec* codec = QTextCodec::codecForName(&q ...

随机推荐

  1. 【SAP业务模式】之ICS(三):前台操作

    本片博文开始讲解SAP前台是如何实现ICS业务模式的. 一.VA01开立销售订单 我这里为了方便,创建了一个订单类型ZMIV作为公司间销售的订单类型,其实公司间销售订单跟标准的销售订单是一致的.同时, ...

  2. Android 调用百度地图API

    一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下 ...

  3. mono -图片处理

    这篇文章中您将了解到以下内容 保存Bitmap WebClient文件上传 向服务端传递数据 保存Bitmap 做移动端开发,图片上传下载是最普通的需求了. 在mono for android中按照资 ...

  4. mono for android 读取网络远程图片

    布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=& ...

  5. 一步步搭建自己的博客 .NET版(2、评论功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  6. 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport

    在上篇博客([Java并发编程实战]----- AQS(二):获取锁.释放锁)中提到,当一个线程加入到CLH队列中时,如果不是头节点是需要判断该节点是否需要挂起:在释放锁后,需要唤醒该线程的继任节点 ...

  7. Entity Framework 6 Recipes 2nd Edition(11-5)译 -> 从”模型定义”函数返回一个匿名类型

    11-5. 从”模型定义”函数返回一个匿名类型 问题 想创建一个返回一个匿名类型的”模型定义”函数 解决方案 假设已有游客(Visitor) 预订(reservation)房间(hotel ) 的模型 ...

  8. BootStrap_01之全局样式

    1.响应式网页: ①Responsive Web Page:一个可以根据浏览设备的不同,而自动更改布局.图片.文字效果的网页: ②构成:不能固定宽度,必须流式布局:文字和图片大小随容器大小而改变:CS ...

  9. PHP 高级编程(5/5) - SPL 数组重载

    ArrayAccess接口 ArrayAccess接口是对象的行为看起来像个数组,定义了四个方法.接口概要如下: ArrayAccess { /* Methods */ abstract public ...

  10. <JavaScript语言精粹>-读书笔记(一)

    用object.hasOwnProperty(variable)来确定这个属性名是否为该对象成员,还是来自于原型链. for(my in obj){ if(obj.hasOwnProperty(my) ...