2013-09-20 1 views
0

Я попытался использовать gsub, чтобы удалить символ ¬ из URL-адреса, поскольку он не должен быть там, но был добавлен сервером клиента.Как вы используете gsub для удаления ¬ символа?

Есть ли способ его удалить? Я пробовал:

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

но это не работает. Есть идеи?

Edit:

Здесь весь блок кода:

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 
+0

Кажется, работает для меня: http://codepad.org/HDXkDkwm – hjpotter92

+0

Это работает и для меня, используя [Lua: demo] (http://www.lua.org/cgi-bin/demo) для теста: –

+0

Я только что проверил, и если я распечатаю строку gsubbed, она выглядит нормально, однако, если я попытаюсь использовать system.openURL в Corona, у нее все еще есть символ ¬. Должна быть проблема Corona, поэтому я спрошу их форумы. Кто-нибудь знает, что символ ¬ называется btw? – TheBestBigAl

ответ

3

Может быть, это может быть несоответствие кодирования.

Этот символ в UTF-8 кодируется как \xC2\xAC (\194\172 в десятичной форме). Более того, строковая библиотека Lua не является кодовой точкой, она обрабатывает только байты, поэтому строковый литерал Lua может быть представлен по-разному в кодировке, в которой хранится скрипт (на моей машине Windows с кодовой страницей 1252 это просто \xAC). Поэтому, когда функция gsub кормится URL-адресом, последовательность байтов, представляющая литерал, не может соответствовать \xAC\xC2 в URL-адресе.

Try, чтобы увидеть, если изменения строки:

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

к:

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

делает никакой разницы.

Примечание: ¬ символ известен в Unicode как "not sign" или также в качестве "под углом тире" (Unicode, код точки U + 00AC). Соответствующий объект HTML равен ¬ или ¬. Он обычно используется в математике как оператор «логический не» (это эквивалент для математиков оператора C ! или оператора Lua not).

Смежные вопросы