Stránka 1 z 1

[JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 08:27
od nofire
Zdravím,

můžete mi prosím někdo poradit. Udělal jsem pomocí ASP a Jquery vyhledávání v MSSQL databázi, kdy kontroluju zapsaný znaky v textboxu, na to reaguje script, pošle dotaz přes ASP do databáze a vrátí výsledek do DIVu s id vyhledej.
Kód: Vybrat vše
<script type="text/javascript">
  $(document).ready(function() {
   $("#jmeno").keyup(function() {
        $.get('posli.asp?q=' +  $('#jmeno').val(), function(vystup){
      $("#vyhledej").html(vystup);
      });     
   });
});     
</script>   


soubor posli.asp
Kód: Vybrat vše
<!--#include file="connstr.asp" -->
<% sql = "SELECT * FROM telseznam WHERE jmeno LIKE '%" & Request.QueryString("q") & "%' OR misto LIKE '%" & aa & "%'"

   vysledek.open sql, spojeni
Do UNTIL vysledek.EOF  %>
<tr>
<td><%= vysledek.fields("jmeno") %></td>
<td><%= vysledek.fields("misto") %></td>
<td><%= vysledek.fields("spojeni") %></td>
</tr>
       
<%   vysledek.movenext
   LOOP
   vysledek.close
%>
</table>



Všechno funguje, ale jen v Mpzille. V Microsoftím prohlížeči je problém je s českými znaky. Jakmile chci vyhledat jméno, který začíná českým zankem, nenajade to nic. Když si zobrazím sql dotaz, který se posílá do databáze, tak mozilla posílá normálně český znaky a Microsoft pošle čtvereček místo jakýhokoliv českýho znaku. Dá se tohle nějak vyřešit ?

Díky za pomoc.

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 09:14
od kostal.david8
Máte nastavený charset UTF-8 v HTTP hlavičkách, nebo jako META charset? Prohlížeč by měl posílat odpověď ve stejném kódování jako dostal stránku.
Používáte UTF-8 i v komunikaci s DB?

Poznámka: Nijak nevalidujete vstup uživatele. Stačí aby napsal do hledání ' a kód se rozbije. To znamená velké bezpečnostní problémy

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 09:21
od nofire
Stránka je v UTF-8. Hlavička vypadá asi takhle:
Kód: Vybrat vše
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="scripts/jquery.min.js"></script>


Když si zobrazím sql dotaz, který se posílá do databáze, tak mozilla pošle normálně český znaky a Microsoft pošle čtvereček místo jakýhokoliv českýho znaku. Jinak bezpečnost je ošetřená. Navíc je to v podnikovým intranetu a ne v internetu. Ale to sammozřejmě je skoro stejný riziko jako v internetu. :-) .

Re: [JQUERY] Mozilla vs. MSIE vyhledábvání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 09:37
od kostal.david8
Má ASP nějakou funkci na převod kódování?

-- 4. 8. 2015 10:44 --

Jaký používáte HTTP server?

Zkuste přidat kódování do HTTP hlavičky:
Response.AddHeader("Content-Type", "text/html; charset=utf-8")

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 09:49
od nofire
No problém je v tom, že už na stránku asp to přijde tak, že VŠECHNY český znaky to MSIE pošle jako čtvereček, takže mi tady převod kédování nepomůže. HTTP server máme IIS 8 va windows serveru 2012 r2.

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 09:55
od kostal.david8
A slyšel jsem i že má IE problém když nemá správný doctype. Zkuste <!DOCTYPE HTML>

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 10:22
od nofire
tak to taky nepomohlo. Zkrátka v microsoftím prohlížeči ten script nepošle český znaky. Ještě zkusit nějakou fintu na Jquery aby to poslal on správně.

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 12:18
od kostal.david8
Zkuste ještě $.ajax místo $.get, dá se tam nastavit kódování
http://api.jquery.com/jquery.ajax/

Pomocí contentType: "application/x-www-form-urlencoded; charset=utf-8"

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 14:54
od gandor
Skvor by som sa sustredil na nieco taketo:
$.get('posli.asp?q=' + encodeURIComponent($('#jmeno').val()), function(vystup){
Potom na strane serveru samozrejme reverzne dekodovanie. S asp-ckom nerobim, ale na 99,999% tam nieco na to bude existovat (s urcitou nizkou pravdepodobnostou, ze to robi sam automaticky)...

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 15:26
od martin1397
Skontroluj:
1) Charset databáze
2) Charset scriptov
3) Nastavený charset v <meta charset="UTF-8">
4) Ak zadávaš cez input doporučujem dať <form accept-charset="UTF-8">

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 15:38
od nofire
Díky, vše vyzkouším zítra až budu zase v práci. Ale posílejte prosím nápady dál. Díky

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 17:49
od Just_jo

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 4. 8. 2015 20:55
od kostal.david8
Kód: Vybrat vše
$.ajax({
  method: "GET",
  url: "posli.asp",
  data: { q: $('#jmeno').val() }
}).done(function(vystup) {
    $("#vyhledej").html(vystup);
});


Myslím že toto pojede, a přijde mi to jako čistčí řešení

-- 4. 8. 2015 21:57 --

martin1397 píše:4) Ak zadávaš cez input doporučujem dať <form accept-charset="UTF-8">

Tohle je nesmysl.
1. Nepoužívá form, ale AJAX,
2. tohle už v HTML5 neplatí, prohlížeč musí posílat data v tom kódování co dostal.

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 5. 8. 2015 01:45
od martin1397
Tohle je nesmysl.
1. Nepoužívá form, ale AJAX,
2. tohle už v HTML5 neplatí, prohlížeč musí posílat data v tom kódování co dostal.


Som si vedomí toho že používa AJAX to bol len takí malý tip.

http://www.w3schools.com/tags/att_form_accept_charset.asp
Čo sa týka toho atribútu accept-charset tak tam nevidím nikde napísané že už sa nemá používať... alebo som snáď slepý? Prípadne budem rád za odkaz na oficiálnu W3C dokumentáciu kde tak bude uvedené inak.

Re: [JQUERY] Mozilla vs. MSIE vyhledávání s českými znaky.

Odeslat příspěvekNapsal: 5. 8. 2015 07:25
od nofire
Díky,
řešení od Gandora funguje bez problémů. Doplnil jsem kód o URIComponent(.......) a už to píše český znaky všude.

Díky všem za spolupráci.