     Loop % StrPut(url, &buff, enc) - 1
     {
         byte := NumGet(buff, A_Index-1, "UChar")
-        encoded .= byte > 127 or byte < 33 ? "%" Substr(byte, 3) : Chr(byte)
+        encoded .= byte > 127 or byte < 33 ? "%" SubStr(byte, 3) : Chr(byte)
     }
     SetFormat, IntegerFast, %formatInteger%
     return encoded

            continue
        }

        splitedLine := StrSplit(SubStr(A_LoopField, 10), " | ")
        col3CalcStr := RegExReplace(splitedLine[1], "[^\x00-\xff]", "`t`t")
        col3RealLen := StrLen(col3CalcStr)

        result .= SubStr(A_LoopField, 1, 9)

        if (col3RealLen > col3MaxLen)
        {
            len := 0
            realLen := 0
            Loop, Parse, col3CalcStr
            {
                if (A_LoopField != "`t")
                {
                    len++
                    realLen++
                }
                else
                {
                    len += 0.5
                    realLen++
                }

                if (realLen == col3MaxLen)
                {
                    break
                }
            }

            result .= SubStr(splitedLine[1], 1, round(len - 0.5))

            ; 删掉一个汉字，补一个空格
            if (round(len - 0.5) != round(len))
                result .= " "

            result .= " | " splitedLine[2] "`r`n"
        }
        else
        {
            col3Len := StrLen(splitedLine[1])
            result .= splitedLine[1] . SubStr(StrSpace, 1, col3MaxLen - col3RealLen)
            result .= " | " splitedLine[2] "`r`n"
        }
    }

    return result

    hideCol4IfEmpty := g_SkinConf.HideCol4IfEmpty

    StrSpace := " "
    Loop, % col3MaxLen + col4MaxLen + 1
        StrSpace .= " "

    result =
