Преобразование slashed строки utf8 в латинский-1 (ISO 8859-1) в Javascript [дубликат]

d = {0:'c', 1:'d', 2:'e', 3: 'f'}
x, y, z = (0, 1, 3)
print [v for (k,v) in d.items() if x==k or y==k or z==k]
2
задан Vikrant 3 December 2015 в 03:56
поделиться

1 ответ

Если у вас есть строка, которую вы хотите экранировать, вы можете использовать String.prototype.charCodeAt()

. Если у вас есть код с экранами, вы можете просто оценить их, чтобы получить оригинал строка. Если это строка с буквальными экранами, вы можете использовать String.fromCharCode()

  • Если у вас есть '\x32\x20\x60\x78\x6e\x7a\x9c\x89' и хотите "2 `xnz", тогда
    '\x32\x20\x60\x78\x6e\x7a\x9c\x89' == "2 `xnz"
    
  • Если у вас есть '\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89', который является литеральной строкой со значением \x32\x20\x60\x78\x6e\x7a\x9c\x89, вы можете проанализировать ее, передав десятичное значение каждой пары шестнадцатеричных цифр на String.prototype.fromCharCode()
    '\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89'.replace(/\\x([0-9a-f]{2})/g, function(_, pair) {
      return String.fromCharCode(parseInt(pair, 16));
    })
    
    . Альтернативно, eval является если вы можете быть уверены в безопасности ввода и производительности, не важно 1 .
    eval('"\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89"')
    
    Обратите внимание на ", вложенный в ', окружающий входную строку. Если вы знаете, что это программа, и это из надежного источника, вы можете eval строку напрямую, что не даст вам ASCII, но будет выполнять сама программа.
    eval('\\x32\\x20\\x60\\x78\\x6e\\x7a\\x9c\\x89')
    
    Обратите внимание, что введенный вами вход не является программой, и вызов eval не работает.
  • Если у вас есть "2 `xnz" и хотите '\x32\x20\x60\x78\x6e\x7a\x9c\x89', тогда
    "2 `xnz".split('').map(function(e) {
      return '\\x' + e.charCodeAt(0).toString(16);
    }).join('')
    
3
ответ дан Community 27 August 2018 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: