Autor Zpráva
Ratimor
Profil *
ahoj, mám problém s vytvořením cookies s diakritikou, je možné vytvářet cookies ještě v hlavičce? Když cookie vytvořím před hlavičkou přes php chápu že ještě není serveru jasné v jakém je to kódování a zmrví to diakritiku.. nevěděl byste někdo jak přes JS, nebo popřípadě přes php vytvořit cookies s diakritikou?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">;
  <link rel='stylesheet' href='./styl.css' type='text/css' />
  
  <script type="text/javascript" language="javascript"> 
    function sablonyUpravitOtazku(i, encoded) //i je označení řádku v cyklu a encoded je string, obsahující diakritiku... zkoušel jsem to různě zakódovat, 
                                                         //aby jí to neobsahovalo, ale to se nějak nepovedlo protože třeba base64_encode() v php neumělo pracovat s "ž".
   {

      var jmenoCookie="sablonaOtazka";
      var dny = 1; // počet dnů, za které cookie vyprší
      var datum= new Date(); // získá aktuální datum v milisekundách
      datum.setTime((datum.getTime() + 1000 * 60 * 60 * 24 * dny)); // k datu přidá počet dnů

      document.cookie= jmenoCookie + "=" + encoded + "; expires=" + datum.toGMTString() ;

      document.getElementById('text_' + i ).style.display = '';
      document.getElementById('input_' + i).style.display = 'none';
    }
  </script> 
  

jakmile vložím do parametru encoded normální, nezakódovaný řetězec s diakritikou už ve správci cookies ve firefoxuje ta diakritika zmršená. Tak jestli někdo ví a má s tímhle nějaké zkušenosti tak prosím zkuste poradit.
Ondra
Fred
Profil
http://slayeroffice.com/tools/unicode_lookup/
Ratimor
Profil *
mm, zajímavý řešení, dělat by se mi to určitě nechtělo, do budoucna nevím jak to budu řešit, doufám spíš že se s tím nepotkám :-D.. popřípadě když se v body da $_COOKIE['nazev']="šěšč"; tak to funguje správně. A tady to řeší přidání GET proměných do toho AJAXu
Chamurappi
Profil
Související: Cookies a diakritika.. :(

Reaguji na Ratimora:
Pusť na ten text funkci espace, nebo encodeURIComponent (a při čtení unescape a decodeURIComponent).
Nebo můžeš ošetřit potenciálně problematické znaky nějakým vlastním druhem escapování, třeba nahradit je za hvězdičku + číslo znaku + hvězdičku:
encoded = encoded.replace(/[\u0080-\uFFFF\*]/g, function(m){ return "*" + p.charCodeAt(0) + "*" });
A při čtení odescapovat:
decoded = decoded.replace(/\*(\d+)\*/g, function(m, m1){ return String.fromCharCode(m1) });

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0