0

gsubURL から文字を削除するために使用しようとしまし¬たが、そこには存在しないはずですが、クライアントのサーバーによって追加されました。

それを取り除く方法はありますか?私はこれを試しました:

s = string.gsub(s, "¬", "")

しかし、これは機能しません。何か案は?

編集:

コードブロック全体は次のとおりです。

if link then
    function urlencode(s)
        s = string.gsub(s, "([{}&=+%c])", 
            function(c)
                return string.format("%%%02X", string.byte(c))
            end
        )
        s = string.gsub(s, " ", "+")
        s = string.gsub(s, "¬", "")
        return s
    end

    print(urlencode(link))
    local url = urlencode(link)
    system.openURL(url)
end
4

1 に答える 1

3

エンコーディングの不一致である可能性があります。

UTF-8 のその文字は( 10 進数で)¬としてエンコードされます。さらに、Lua 文字列ライブラリはコードポイントを認識せず、バイトのみを処理するため、Lua 文字列リテラルは、スクリプトが格納されているエンコーディングで異なる方法で表現される場合があります (私の Windows マシンでは、コード ページ 1252 で、単純です) 。 . したがって、関数に URL が渡されると、リテラルを表すバイト シーケンスがURL 内の と一致しませんでした。\xC2\xAC\194\172"¬"\xACgsub\xAC\xC2

行を変更するかどうかを確認してください。

s = string.gsub(s, "¬", "")

に:

s = string.gsub(s, "\194\172", "")

違いはありません。

注: ¬ 記号は、Unicode では「否定記号」または「斜線」 (Unicode コード ポイント U+00AC)として知られています。対応する HTML エンティティは¬または¬です。これは一般的に数学で「論理否定」!演算子として使用されます (C演算子または Lua演算子の数学者にとっては同等ですnot)。

于 2013-09-21T11:32:51.310 に答える