关于图灵机器人访问网址中中文编码的问题(C++下 UrlEncode编码过程)

最近在开发智能家居,子模块中调用了图灵机器人(http://tuling123.com/openapi/cloud/home.jsp

但是发现一直不成功,返回值一直是 40006  百般调试无果  最后发现是中文转码的问题  一般网址都会讲中文进行一次转码,暂且称作 UrlEncode

转码过程很简单,因为中文编码不是一个字节,而是多个字节(ASCLL码为两个, Unicode码为三个),转码过程实际上就是将中文字符按字节输出为 :

%+该字节十六进制表达式

例如 ‘啊’ 字按位输出 则为

则转码之后的 ‘啊’字 为 %b0%a1(Ascll码)  ,相同道理 Utf-8 码的 ‘啊’字 转码后为 %e5%95%8a

而字母,数字,以及一些符号如 下划线,~等是不用编码的。

另外注意:空格在网址中不允许出现 被编码为 + 号

则据此可以写出UrlEncode编码的代码

/*
******************************************
    Title: UrlEncode转码(Ascll版)
******************************************
    Date:2014/12/05
******************************************
    author:刘旭
******************************************
*/
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

typedef unsigned char BYTE;

BYTE Int_to_Hex(const BYTE src)
{
	return src > 9 ? (src+55) : (src+48);
}

string encode(const string src)
{
	string result = "";
	int length = src.length();
	int pos = 0;	//结果字符串的长度标记

	for(int i = 0; i < length; i++){
		if(isalnum((BYTE)src[i]) || /*判断是否为字母或者数字  必须进行类型转换*/
			':' == src[i]		||
			'_' == src[i]	||
			'.' == src[i]		||
			'~' == src[i]	||
			'?' == src[i]	||
			'&' == src[i]	||
			'=' == src[i]   ){//因为项目需要,这里我保留了网址里常用的几个字符,其他的字符请查询,时间问题,不多做补充
				result += src[i];	//保持不变
		}
		else if(' ' == src[i]){//如果是空格
			result += "+";
		}
		else {//如果是其他字符
			BYTE temp = Int_to_Hex((BYTE) src[i]);
			result += "%";
			result += Int_to_Hex((BYTE)src[i] >> 4);
			result += Int_to_Hex((BYTE)src[i] % 16);
		}
	}
	return result;
}

int main()
{
	string src= "你好啊";

	string dest = encode(src);

	cout<<dest<<endl;

	return 0;
}
时间: 2024-11-16 04:24:10

关于图灵机器人访问网址中中文编码的问题(C++下 UrlEncode编码过程)的相关文章

图灵机器人来了,你准备好了吗?

无论是打开微信朋友圈还是科技新闻,但凡是“人工智能”相关动态总能毫无悬念的独占行业老大位置,默认的头版头条永远属于它,它的出现也总能成为大家评头论足的对象.大家凑热闹的同时更多的则是观望态度,以一种拭目以待的目光期待更好的智能产品出现.暂且不说当前市场上的智能产品好坏本身亦或只是一个噱头出现在大众面前,但市场趋势的大背景下已经很好的推动着整个行业的发展.2015年势必会上演一场智能大战,还是那句话:让我们拭目以待吧!       众观历史,一次变革甚至是一项新技术的出现必将引领整个社会的发展,从

访问图灵机器人接口请求数据

# Third-party Library import requests # POST请求参数 args = { "reqType": 0, "perception": { "inputText": { "text": "北京" } }, "userInfo": { "apiKey": "eaf3daedeb374564bfe9db10044bc20b&q

使用图灵机器人笑话功能提高微信公众帐号活跃度

概要: 微信公众帐号早已经"泛滥成灾",虽然如此,各企业商家还是费尽心思在上面做文章,以免"错失商机".然而,微信公众帐号的活跃度可为掺不忍睹,除了极个别的知名服务行业帐号每天有上千次交互外,其余基本"无人问津". 为了解决这一难题,提高微信活跃度,本次教程以java开发为例,介绍如通过图灵机器人api接口在微信公众帐号中加入笑话功能. 通过增加其趣味娱乐性,可以有效提高用户粘度,在保证关注量的同时,实现公众帐号应有的价值. 本文重点介绍笑话功能

图灵机器人的应用

要实现一个图灵机器人(类似微软小冰),首先需要在 http://www.tuling123.com/ 中注册,然后创建一个应用,便可通过应用的API key使用图灵机器人.图灵机器人非常方便的一点是不需要添加额外的库类.只需要get请求访问 http://www.tuling123.com/openapi/api 就可以获得json数据,然后对json数据进行解析即可. 1 写一个访问图灵机器人网络地址的工具类 这里用到了谷歌sdk自带的JSONObject解析json数据,然后根据json数据

调用图灵机器人API实现简单聊天

昨天突然想在Android下调用图灵机器人API实现聊天的功能.说干就干,虽然过程中遇见一些问题,但最后解决了的心情真好. API接口是(key值可以在图灵机器人网站里注册得到) www.tuling123.com/openapi/api?key=1702c05fc1b94e2bb4de7fb2e61b21a3&info=hello 最后hello是讲的话,访问这个网站会访问一个JSON格式的内容. text关键字就是访问的内容,只要把这个关键字的内容截取下列就行了. 下面开始写代码. 首先布个

Andrioid项目之九图灵机器人

Andrioid项目之九图灵机器人 要实现一个图灵机器人,首先需要在 http://www.tuling123.com/ 中注册,然后创建一个应用, 便可通过应用的API key使用图灵机器人.图灵机器人非常方便的一点是不需要添加额外的库类. 只需要get请求访问 http://www.tuling123.com/openapi/api 就可以获得json数据, 然后对json数据进行解析即可. 下面就用Json解析一下数据 Json解析格式: 一. JSON (JavaScript Objec

Android学习之智能聊天机器人(图灵机器人)

今天我们来分享一个有趣的应用:Android版的智能聊天机器人 开发工具:Eclipse 开发时间:2015/07/07 所用技术:图灵机器人API  网络通信之异步请求 接口回调  自定义Adapter 下面我将详细叙述开发的步骤: 第一步:申请图灵机器人的API KEY 方法很简单,只需要在图灵机器人API官网注册一个账号,注册成功之后,会显示一个API KEY 图灵机器人API 账号注册网址:图灵机器人 注册成功后,点击平台接入,认真看一下API接入的流程 第二步:开始创建工程进行编码,首

图灵机器人,web录音实现自动化交互问答

一.图灵机器人 介绍 图灵机器人是以语义技术为核心驱动的人工智能公司,致力于"让机器理解世界",产品服务包括机器人开放平台.机器人os和场景方案.\ 官方地址为: http://www.tuling123.com/ 使用 首先得注册一个账号,或者使用第3方登录,都可以. 登录之后,点击创建机器人 机器人名称,可以是自己定义的名字 选择网站->教育学习->其他 输入简介 创建成功之后,点击终端设置,拉到最后. 可以看到api接入,下面有一个apikey,待会会用到 右侧有一个

【Python + Flask + Web录音 + baidu-aip + 图灵机器人 = 人机对话】 &#106514;

原文: http://blog.gqylpy.com/gqy/351 安装baidu-aip:pip install baidu-aip 百度云网址:https://login.bce.baidu.com 百度语音合成文档:https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 百度语音识别文档:https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top 百度自然语言处理基础技术文档:https://