編解碼相關函數
更新時間 2024-07-22 18:11:16
最近更新時間: 2024-07-22 18:11:16
分享文章
本文簡述編解碼相關函數的語法、作用、入參、返回值、示例。
ctyun.json.encode
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | json_text= ctyun.json.encode(value) |
| 作用 | 將Lua值序列化為包含JSON表示的字符串。 |
| 入參 | value: Lua值或表,支持如下類型:boolean, nil,number,string,table。 |
| 返回值 | json_text: UTF-8 JSON字符串。 |
示例:
local value = { true, { foo = "bar" } }
local json_text = ctyun.json.encode(value) -- 返回: '[true,{"foo":"bar"}]'
ctyun.json.decode
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | value= ctyun.json.decode(json_text) |
| 作用 | 將任何UTF-8 JSON字符串反序列化為Lua值或表。 |
| 入參 | json_text: UTF-8 JSON字符串。 |
| 返回值 | value: Lua值或表。 |
示例:
local json_text = '[ true, { "foo": "bar" } ]'
local value = ctyun.json.decode(json_text) --返回: { true, { foo = "bar" } }
ctyun.encode_args
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | str= ctyun.encode_args(table) |
| 作用 | 根據URI編碼規則將Lua表編碼為查詢args字符串。 |
| 入參 | table: 參數Lua表。表鍵必須是Lua字符串。 |
| 返回值 | str: 查詢args字符串。 |
示例:
ctyun.encode_args({foo = 3, ["b r"] = "hello world"}) --結果為:foo=3&b%20r=hello%20world
--還支持多值查詢參數。只需使用Lua表來顯示參數的值
ctyun.encode_args({baz = {32, "hello"}}) --結果為baz=32&baz=hello
--如果值表為空,效果相當于nil值。還支持布爾參數值,如果參數值為false,則效果相當于nil值。
ctyun.encode_args({a = true, b = 1}) --結果為a&b=1
ctyun.decode_args
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | table, err = ctyun.decode_args(str, max_args?) |
| 作用 | 將URI編碼的查詢字符串解碼為Lua表。這是ngx.encode_args的逆函數。 |
| 入參 | str:string,uri的query string。 max_args: 可選,可用于指定從str參數解析的最大參數數量。默認情況下,最多解析100個請求參數(包括同名的參數),并丟棄額外的URI參數,以防止潛在的拒絕服務攻擊。當超過限制時,它將返回第二個值,即字符串"truncated"。 這個參數可以設置為0來消除限制并處理接收到的所有請求參數。 |
| 返回值 | table: 解碼為Lua表。 err: 當str參數超過max_args時,err返回"truncated"。 |
示例:
local args = ctyun.decode_args(str, 0)
ctyun.unescape_uri
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | newstr = ctyun.unescape_uri(str) |
| 作用 | 對uri進行反轉義。 |
| 入參 | str:string,已轉義的uri。 |
| 返回值 | newstr: 對uri反轉義后的結果。 |
示例:
local newstr = ctyun.unescape_uri("b%20r56+7")
ctyun.escape_uri
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | newstr = ctyun.escape_uri(str,type?) |
| 作用 | 對uri進行轉義編碼。 |
| 入參 | str:string,待編碼字符串。 type:可選,默認為2, 可為以下值: (1)0:將str轉義為完整的URI,字符(空格)、#、%、?、0x00 ~ 0x1F、0x7F ~ 0xFF將被轉義。 (2)將str轉義為uri。除字母、數字、-、.、_、~之外的所有字符將被編碼為%XX。 |
| 返回值 | newstr: 對uri轉義后的結果。 |
示例:
local newstr = ctyun.escape_uri("/test/a_tt?b=##4")
ctyun.decode_base64
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | newstr = ctyun.decode_base64(str) |
| 作用 | 將str參數解碼為原始形式的base64摘要。如果str格式不正確,則返回nil。 |
| 入參 | str:string,待解碼字符串。 |
| 返回值 | newstr: base64解碼后的結果,或者為nil(str格式不正確的情況)。 |
示例:
local src = "R/pvxzHC4NLtj7S+kXFg/NePTmk="
local newstr = ctyun.decode_base64(src)
ctyun.encode_base64
函數信息詳見下表:
| 項目 | 描述 |
|---|---|
| 語法 | newstr = ctyun.encode_base64(str, no_padding?) |
| 作用 | 將str編碼為base64摘要。 |
| 入參 | str:string,待編碼字符串。 no_padding: boolean類型,可選,表示是否應該將base64填充添加到結果摘要中(默認為false,即啟用填充)。 |
| 返回值 | newstr: base64摘要。 |
示例:
local src = "hello"
local newstr = ctyun.encode_base64(src)