/**
* 转载请注明出处, 由于个人技术能力有限, 英语水平欠缺,
* 有翻译不合适或错误的地方, 请纠正,
* 希望不要因为我的错误误导您, 希望您的智慧可以加入.
* @translator: selfimpr
* @mail: lgg860911@yahoo.com.cn
* @blog: http://blog.csdn.net/lgg201
*/
由于能力有限, 自己对TC的文件数据库部分尚未理解, 所以暂时到此为止.
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoIntenseQuote, li.MsoIntenseQuote, div.MsoIntenseQuote
{mso-style-priority:30;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"明显引用 Char";
mso-style-next:正文;
margin-top:10.0pt;
margin-right:46.8pt;
margin-bottom:14.0pt;
margin-left:46.8pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
border:none;
mso-border-bottom-alt:solid #4F81BD .5pt;
padding:0cm;
mso-padding-alt:0cm 0cm 4.0pt 0cm;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
color:#4F81BD;
mso-font-kerning:1.0pt;
font-weight:bold;
font-style:italic;}
span.Char
{mso-style-name:"明显引用 Char";
mso-style-priority:30;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:明显引用;
mso-ansi-font-size:10.5pt;
mso-bidi-font-size:11.0pt;
color:#4F81BD;
mso-font-kerning:1.0pt;
font-weight:bold;
font-style:italic;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:宋体;
mso-hansi-font-family:Calibri;
mso-font-kerning:0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
编码
API
char *tcurlencode(const char *ptr, int
size);
使用
URL
编码规则编码一个序列化对象
.
char *tcurldecode(const char *str, int
*sp);
使用
URL
编码规则解码
str, sp
记录解码后返回值长度
TCMAP *tcurlbreak(const char *str);
把个顶的
url
字符串
str
按照
URL
规则分裂成为一个
TCMAP
对象
,
返回的
TCMAP
对象中有以下
key:
self:
URL
自身
scheme:
协议
,
支持
HTTP, HTTPS, FTP, FILE
等
host:
主机名或
IP
port:
主机端口号
authority:
站点信息
(
不是很清楚
,
有懂的朋友麻烦邮件
lgg860911@yahoo.com.cn,
共同学习
,
谢谢
)
path:
资源路径
file:
访问文件名
(
无目录
)
query:
查询字符串
fragment:
url
最后的
#
后面的东西
,
通常是访问锚点
. BOM
中的
window.location.hash
char *tcurlresolve(const char *base, const
char *target);
用一个绝对路径的
URL
解析一个相对路径的
URL,
如果
target
是相对的
,
返回的是相对
base
的域的
URL,
否则返回
target
的拷贝
.
char *tcbaseencode(const char *ptr, int
size);
base64
编码一个序列化对象
char *tcbasedecode(const char *str, int
*sp);
base64
编码解码
char *tcquoteencode(const char *ptr, int
size);
Quoted-printable
编码一个序列化对象
char *tcquotedecode(const char *str, int
*sp);
Quoted-printable
编码解码
char *tcmimeencode(const char *str, const
char *encname, bool base);
MIME
编码
, encname
指定编码名字
, base
指定是否使用
base64
进行编码
,
如果是
false
使用
Quoted-printable
编码
char *tcmimedecode(const char *str, char
*enp);
MIME
解码
,
解码后
, enp
将会记录
tcmimeencode
中的
encname
类型名
char *tcmimebreak(const char *ptr, int
size, TCMAP *headers, int *sp);
把
ptr
给定的
MIME
内容拆分成
head
和
body, body
作为函数的内容返回
, sp
将记录
body
的大小
,
对于拆分得到的头
,
组装成
TCMAP
记录到
headers
中
, headers
中有如下
key
TYPE:
Content-Type
CHARSET:
Content-Transfer-Encoding
BOUNDARY:
Content-Type
标头的边界参数值
DISPOSITION:
MIME
协议的
Content-Disposition
标头
FILENAME:
文件名
NAME:
属性名
TCLIST *tcmimeparts(const char *ptr, int
size, const char *boundary);
根据
boundary
分割
ptr
指定的
MIME
数据为一个
TCLIST
char *tchexencode(const char *ptr, int
size);
把一个序列化对象编码成
16
进制
,
内部是没读取一个字节
,
用
sprintf
输入到新的字符串中
,
最终返回新字符串
char *tcpackencode(const char *ptr, int
size, int *sp);
使用
Packbits
算法压缩序列化对象
, sp
记录压缩后大小
char *tcpackdecode(const char *ptr, int
size, int *sp);
使用
Packbits
算法解压缩
char *tcbsencode(const char *ptr, int size,
int *sp);
使用
TCBS
算法压缩序列化对象
, sp
记录压缩后大小
char *tcbsendecode(const char *ptr, int
size, int *sp);
使用
TCBS
算法解压
char *tcdeflate(const char *ptr, int size,
int *sp);
使用
Deflate
算法压缩序列化对象
, sp
记录压缩后大小
char *tcinflate(const char *ptr, int size,
int *sp);
使用
Deflate
算法解压缩
char *tcgzipencode(const char *ptr, int
size, int *sp);
gzip
压缩
char *tcgzipdecode(const char *ptr, int
size, int *sp);
gzip
解压缩
unsigned int tcgetcrc(const char *ptr, int
size);
获取
CRC32
校验和
char *tcbzipencode(const char *ptr, int
size, int *sp);
使用
BZIP2
压缩
char *tcbzipdecode(const char *ptr, int
size, int *sp);
BZIP2
解压缩
char *tcberencode(const unsigned int *ary,
int anum, int *sp);
使用
BER
编码一个无符号整数数组
unsigned int *tcberdecode(const char *ptr,
int size, int *np);
从一个字符串利用
BER
算法解码出一个无符号整数数组
, np
记录数组大小
char *tcxmlescape(const char *str);
用来将给定的
xml
字符串
str
中的特殊字符
(xml
中定义的
)
进行转义
,
该函数只会转义
’&’, ‘<’, ‘>’,
‘”’
等
4
个字符
char *tcxmlunescape(const char *str);
将给定的
xml
字符串
str
中的实体字符
(xml
中定义的
)
还原成原始字符
,
该函数只会转义
’&’, ‘<’,
‘>’, ‘quot;’
等