utility.cpp

来自「自制IE插件,实现在www.mailu.cn搜索的动能」· C++ 代码 · 共 68 行

CPP
68
字号
#include "stdafx.h"
#include "stdio.h"

char* ToIntNumber(char value)   
{
	_bstr_t bt = L"";
	char  buffer[100];

	if(value != '\0')
	{
		if(value>='0' && value <= '9')
			sprintf(buffer, "%c", value);
		else if(value >= 'A' && value <= 'Z')
			sprintf(buffer, "%c", value);
		else if(value >= 'a' && value <= 'z')
			sprintf(buffer, "%c", value);
		else
		{
			bt = L"%";
			sprintf(buffer, "%02x", (BYTE)value);
		}

		bt += buffer;
	}

	return _com_util::ConvertBSTRToString(bt);
}

void fn_UnicodeToUTF8(char* pOut, wchar_t *pText)
 {
	// 注意 WCHAR高低字的顺序,低字节在前,高字节在后
	char* pchar = (char *)pText;

	if( pchar[1]=='\0')
	{
		pOut[0] = pchar[0];
		pOut[1] = '\0';
		pOut[2] = '\0';
	}
	else
	{
		pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
		pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);
		pOut[2] = (0x80 | (pchar[0] & 0x3F));
	}
	return;
 }

char* UrlEncode(wchar_t * pSrcString)
{
	char pchar[3];
	_bstr_t bt = L"";
	int i = 0;
	while(pSrcString[i] != '\0')
	{
		fn_UnicodeToUTF8(pchar, pSrcString + i);
		bt += ToIntNumber(pchar[0]);
		bt += ToIntNumber(pchar[1]);
		bt += ToIntNumber(pchar[2]);
		
		i ++;
	}

	return _com_util::ConvertBSTRToString(bt);
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?