这是Module:EncoderUtil的文档页面

主要提供5种编码解码工具:

  • JSON编码/解码
    • 包含一个“非函数物件之深层复制”的方法
  • 简易的YAML解码
  • 二进制编码
  • QR码编码({{QR}})
  • Base64编码/解码({{Base64}})

使用方法

编辑

编码

编辑
本模组._jsonEncode

能将Lua编码为JSON的函数。与mw.text.jsonEncode不同在于,mw.text.jsonEncode遇到函数物件会出错,而本模组的_jsonEncode会将函数物件以替代符号表示而不会出错,能正常转换各种Lua物件。

不支援模板直接呼叫。

解码

编辑

JSON解码仅需要使用mw.text.jsonDecode即可,本模组无特别提供。

解码

编辑
本模组.yamlDecode

能将YAML解码为Lua物件。支援模板直接呼叫。

原始码 输出
{{#invoke:EncoderUtil|yamlDecode|
---
receipt:     Oz-Ware Purchase Invoice
date:        2012-08-06
customer:
    given:   Dorothy
    family:  Gale}}
{
  ["customer"] = {
    ["family"] = "Gale",
    ["given"] = "Dorothy"
  },
  ["date"] = 1344182400,
  ["receipt"] = "Oz-Ware Purchase Invoice"
}
本模组.yaml2json

将YAML转换为JSON。支援模板直接呼叫。

原始码 输出
{{#invoke:EncoderUtil|yaml2json|
---
receipt:     Oz-Ware Purchase Invoice
date:        2012-08-06
customer:
    given:   Dorothy
    family:  Gale}}
{"customer":{"given":"Dorothy","family":"Gale"},"date":1344182400,"receipt":"Oz-Ware Purchase Invoice"}

本函数的功能并非设计给数字进行进制转换之用,而是资料流的编解码。若需要将数字进行进制转换,请参考Module:BaseConvertModule:BigNumber提供的convertBase函数

编码

编辑
本模组._toBinary(x,digits)

能将一整数转换成指定位数的二进制资料串。(供QR码资料串编码使用)

不支援模板直接呼叫。

本模组._binaryEncode(str)

能将一字串以UTF-8的格式编码为二进制资料串。

有支援模板直接呼叫的函数binaryEncode

  • 原始码{{#invoke:EncoderUtil|binaryEncode|維基百科}}
    输出→111001111011011010101101111001011001111110111010111001111001100110111110111001111010011110010001
本模组._hexadecimalEncode(str)

能将一字串以UTF-8的格式编码为十六进制资料串。

有支援模板直接呼叫的函数hexadecimalEncode

  • 原始码{{#invoke:EncoderUtil|hexadecimalEncode|維基百科,自由的百科全書}}
    输出→e7b6ade59fbae799bee7a791efbc8ce887aae794b1e79a84e799bee7a791e585a8e69bb8

解码

编辑
本模组._binaryDecode(bin)

一个二进制资料串解码为UTF-8格式编码的字串。

有支援模板直接呼叫的函数binaryDecode

  • 原始码{{#invoke:EncoderUtil|binaryDecode|111001111011011010101101111001011001111110111010111001111001100110111110111001111010011110010001}}
    输出→維基百科
本模组._hexadecimalDecode(hex)

一个十六进制资料串解码为UTF-8格式编码的字串。

有支援模板直接呼叫的函数hexadecimalDecode

  • 原始码{{#invoke:EncoderUtil|hexadecimalDecode|e7b6ade59fbae799bee7a791efbc8ce887aae794b1e79a84e799bee7a791e585a8e69bb8}}
    输出→維基百科,自由的百科全書
本模组._get_libqrcode()

初始化QR码编码程式库。此处所有函数皆不支援模板直接呼叫。若要让模板直接呼叫,请改用Module:QRModule:RegularTiling提供的API(相依于本模组)。

初始化完的程式库有以下成员:

  • license:记录函式库三句版BSD授权条款的详细资料。
  • encode_string_numeric:将纯数字字串编码为QR码格式的二进制资料流。
  • encode_string_ascii:将纯ASCII字串编码为QR码格式的二进制资料流。
  • encode_string_binary:将UTF-8字串编码为QR码格式的二进制资料流。
  • encode_data:根据QR码编码模式将输入的资料编码为QR码格式的二进制资料流。
  • qrcode:生成完整QR码二维码的二进制资料流。
  • get_mode:判断输入字串适合的QR码编码模式。
  • get_length:将资料长度资讯编码为QR码格式的二进制资料流。
  • add_pad_data:生成QR码的padding bits。
  • get_generator_polynominal_adjusted
  • get_pixel_with_mask:取得QR码特定位置的掩模。
  • get_version_eclevel_mode_bistringlength
  • get_version_eclevel
  • remainder:各Ver的QR码编码时需要补馀的位元数量。
  • arrange_codewords_and_calculate_ec
  • calculate_error_correction:计算纠错码
  • convert_bitstring_to_bytes:将长度为 的二进制字串转换为长度为 的数字阵列。
  • get_matrix_and_penalty
  • get_matrix_with_lowest_penalty
  • bit_xor
本模组._get_libbase64()

初始化Base64编码程式库。此处所有函数皆不支援模板直接呼叫。

初始化完的程式库有以下成员:

  • encode( str, encoder, usecaching ):将字串以指定编码器编码为Base64
  • decode( b64, decoder, usecaching ):将Base64资料流以指定解码器进行解码。
  • makeencoder( s62, s63, spad ):以给定的62、63字元和指定的spad生成编码器。
  • makedecoder( s62, s63, spad ):以给定的62、63字元和指定的spad生成解码器。

编码

编辑
本模组.base64Encode(str)

将字串编码为标准的Base64资料流。支援模板直接呼叫。

  • 原始码{{#invoke:EncoderUtil|base64Encode|維基百科,自由的百科全書}}
    输出→57at5Z+655m+56eR77yM6Ieq55Sx55qE55m+56eR5YWo5pu4

解码

编辑
本模组.base64Decode(b64)

将给定的Base64资料流依照标准的Base64格式进行解码。支援模板直接呼叫。

  • 原始码{{#invoke:EncoderUtil|base64Decode|57at5Z+655m+56eR77yM6Ieq55Sx55qE55m+56eR5YWo5pu4}}
    输出→維基百科,自由的百科全書