2017-01-17 4 views
0

Я пытаюсь создать простой инструмент для поиска по-немецки. Когда я помещаю определенные символы, они меняются. Например, ü есть% FC, ä -% E4, ö - $ F6, ß -% DF. Я предполагаю, что где-то символы преобразуются в какие-то другие наборе символов, кроме UnicodeJavascript HTML-формы: пользовательский ввод unicode для вывода unicode

<!DOCTYPE html> 

<html> 

<head> 
    <meta charset="UTF-8"> 
    <script language="javascript" charset="UTF-8"> 
     function basicSearch() 
     { 
      //document.basicForm.basicWord.value = '\u1495'; 
      var basicSubmit=document.basicForm; 
      var basicWord = escape(basicSubmit.basicWord.value); 
      document.getElementById("demo").innerHTML = basicWord; 
      window.open("https://translate.google.com/#de/en/" + basicWord); 
      return false; 
     } 
    </script> 
</head> 
<body> 
    <form name="basicForm" onSubmit="return basicSearch();" accept-charset="UTF-8"> 
    <input type="text" name="basicWord"> 
    <input type="submit" name="SearchSubmit" value="Search"> 
    </form><br> 

<p id="demo"></p> 


</body> 
</html> 

ответ

0
var basicWord = escape(basicSubmit.basicWord.value); 

в JavaScript escape()/unescape() кодирование представляет собой причудливое пользовательский формат, который вы почти никогда не хотите использовать. Для кодирования параметров URL-адресов с использованием настоящих правил правильного URL функция, которую вы хотите, равна encodeURIComponent().

document.getElementById("demo").innerHTML = basicWord; 

Избегайте написание HTML разметки документа, вы получите проблемы HTML-инъекций, которые могут привести к отверстиям безопасности Межсайтовых скриптинга. Вместо этого напишите textContent, чтобы написать обычный текст.

window.open("https://translate.google.com/#de/en/" + basicWord); 

(Кстати, Google Translate также принимает параметры формы: q для текста для перевода, sl для источника и tl для целевого языка Так FWIW вы могли бы сделать это с помощью простой формы без JS.).

+0

Спасибо, бобин! –

1

его хорошая идея, чтобы рассмотреть HTTP кодирующего любые URI, вы вручную ПОСТРОЕНИЕ. В этом случае мы можем использовать encodeURIComponent текст ввода для надлежащего HTTP-кодирования данных, передаваемых в URI.

// früh -> early 
var basicWord = encodeURIComponent(basicSubmit.basicWord.value); 
// basicWord = 'fr%C3%BCh'; 

Другие случаи могут потребовать использования encodeURI. См. this question для получения дополнительной информации.

+0

Спасибо GantTheWanderer –

0

благодарственных вы оба. Если кому-то интересно, ниже приведено окончательное кодирование. Я сделал это, чтобы помочь создать флеш-карты для ANKI, используя Gabriel Wyner's youtube vids и его мультиинструмент.

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Page Title</title> 
</head> 
<body> 
<script> 


function basicSearch() { 
    var basicSubmit=document.basicForm; 
    var basicWord = encodeURIComponent(basicSubmit.searchterms.value); 
    window.open("https://de.wiktionary.org/w/index.php?search=" + basicWord + "&title=Spezial:Suche&go=Seite&searchToken=480i5tddc2tqpr6njyi8gx2oa"); 
    window.open("http://forvo.com/search/" + basicWord + "/"); 
    window.open("https://www.google.de/search?q=" + basicWord + "&biw=1280&bih=611&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiOydnfssfRAhVCqlQKHaPSDvoQ_AUIBigB#q=" + basicWord + "&tbm=isch&tbs=isz:m"); 
    window.open("https://translate.google.com/#de/en/" + basicWord); 
    return false; 

} 

function actionSearch() { 
    var actionSubmit=document.actionForm; 
    var actionWord = encodeURIComponent(actionSubmit.searchterms.value); 
    window.open("https://www.google.de/search?q=" + actionWord + "&biw=1280&bih=611&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiiwtDttMfRAhVkx1QKHc6PCgMQ_AUIBigB#tbs=isz:m%2Citp:animated&tbm=isch&q=" + actionWord); 
    return false; 
} 


</script> 

<form name="basicForm" onSubmit="return basicSearch();"> 
Search for a basic word: 
<input type="text" name="searchterms"> 
<input type="submit" name="SearchSubmit" value="Search"> 
</form><br> 
<form name="actionForm" onSubmit="return actionSearch();"> 
Search google for animation: 
<input type="text" name="searchterms"> 
<input type="submit" name="SearchSubmit" value="Search"> 
</form><br> 

<a href="https://de.wiktionary.org/wiki/Verzeichnis:Deutsch/Redewendungen">German quotes/sayings</a> 

<h2>English links for gifs: (for verbs or other)</h2> 
<a href="http://giphy.com/">http://giphy.com/</a><br> 
<a href="http://www.reactiongifs.com/">http://www.reactiongifs.com/</a><br> 
<a href="https://www.reddit.com/r/gifs/">https://www.reddit.com/r/gifs/</a><br> 
<a href="https://www.reddit.com/r/reactiongifs/">https://www.reddit.com/r/reactiongifs/</a><br> 
<a href="https://www.reddit.com/r/analogygifs">https://www.reddit.com/r/analogygifs</a><br> 
<a href="https://www.reddit.com/r/HighQualityGifs/">https://www.reddit.com/r/HighQualityGifs/</a><br> 
<a href="https://www.reddit.com/r/DANCEGIFS/">https://www.reddit.com/r/DANCEGIFS/</a><br> 
<a href="http://www.gifbin.com/">http://www.gifbin.com/</a><br> 


</body> 
</html> 
Смежные вопросы