Java script 中 API POST 方法的特殊字符到 HTML - Google Script



我正在Google Script上编写一个脚本,以便与Airtable的API进行交互。 若要要求 API 返回基于查询的记录列表,它们提供用于发送 post 请求的 URL。但是,对于 URL 的查询部分,他们要求将特殊字符转换为 HTML。

直接回答我的问题:有没有更干净的方法来编写代码? 我的第一个解决方案是为每个字符创建一个字典,然后运行"替换"方法将特殊字符替换为字典上的相对字符。 有比我更了解Javascript的人吗?请记住,我正在Google脚本上运行它。

function urlEncoder(toEncode) {
var dictionary = {
'(':'(',')':')','`':'%60','~':'~','!':'!','@':'%40','#':'%23','^':'%5E','$':'%24','%':'%25','&':'%26',
'*':'*','-':'-','_':'_','=':'%3D','+':'%2B','[':'%5B',']':'%5D','{':'%7B','}':'%7D','\':'%5C','|':'%7C',';':'%3B',':':':',
''':''','"':'"',',':'%2C','<':'%3C','.':'.','>':'%3E','/':'%2F','?':'%3F',' ':'+',
'à':'%C3%A0','À':'%C3%80','á':'%C3%A1','Á':'%C3%81','â':'%C3%A2','Â':'%C3%82','ä':'%C3%A4','Ä':'%C3%84','ã':'%C3%A3','Ã':'%C3%83',
'è':'%C3%A8','È':'%C3%88','é':'%C3%A9','É':'%C3%89','ê':'%C3%AA','Ê':'%C3%8A','ë':'%C3%AB','Ë':'%C3%8B',
'ì':'%C3%AC','Ì':'%C3%8C','í':'%C3%AD','Í':'%C3%8D',
'ò':'%C3%B2','Ò':'%C3%92','ó':'%C3%B3','Ó':'%C3%93','ô':'%C3%B4','Ô':'%C3%94','ö':'%C3%B6','Ö':'%C3%96','õ':'%C3%B5','Õ':'%C3%95',
'ù':'%C3%B9','Ù':'%C3%99','ú':'%C3%BA','Ú':'%C3%9A','û':'%C3%BB','Û':'%C3%9B','ü':'%C3%BC','Ü':'%C3%9C',
'ç':'%C3%A7','Ç':'%C3%87','ñ':'%C3%B1','Ñ':'%C3%91'
}
var result = toEncode.replace(/[^a-z0-9]/gi, m => dictionary[m])
Logger.log('URL Encoder:'+toEncode+'>>'+result)
return result
}

Airtable提供的字符串编码器可以在这里找到:https://codepen.io/airtable/full/rLKkYB

谢谢!

没有必要为此创建自己的函数,javascript 中已经有一个名为encodeURI的函数:

var url = "my test.asp?name=ståle&car=saab";
var res = encodeURI(url);
// res = "my%20test.asp?name=st%C3%A5le&car=saab"

最新更新