Autor Zpráva
rad
Profil *
snazim se o prevod znaku. zkousim to takhle ale nejspis to nefunguje nevite co jineho pouzit ?
diky za odpoved

 function affiche(str)
      {
      var arr=[
          "Ě","Ě","š",
          "Š","č","Č",
          "ř","Ř","ž",
          "Ž","ý", "Ý",
          "á", "Á","í",
          "Í","é","É",
          "ú", "ú","ů",
          "Ů","ď", "Ď",
          "ť","Ť","ň",
          "Ň"];
           
           var barr=["ě","Ě","š","Š",
                      "č","Č","ř","Ř",
                       "ž","Ž","ý","Ý",
                       "á","Á","í","Í",
                       "é","É","ú","Ú",
                      "ů","Ů","ď","Ď",
                      "ť","Ť","ň","Ň"];    
       
     return str.replace(arr,barr)
      }  
      
         
      var firma = affiche(data.firma);  
rad
Profil *
tak zkousim jinou verzi porad bohuzel bez vysledku zde je upraveny kod :

var accent_map = {
    'Ě':'ě', 'Ě':'Ě', 'š':'š','Š':'Š','č':'č',
    'Č':'Č', 'ř':'ř', 'Ř':'Ř','ž':'ž','Ž':'Ž',
    'ý':'ý', 'Ý':'Ý', 'á':'á','Á':'Á','í':'í',    
    'Í':'Í', 'é':'é', 'É':'É','ú':'ú','ú':'Ú',
    'ů':'ů', 'Ů':'Ů', 'ď':'ď','Ď':'Ď','ť':'ť',
    'Ť':'Ť', 'ň':'ň', 'Ň':'Ň'   
    };
    
function accent_fold (s) {
  if (!s) { return ''; }
  var ret = '';
  for (var i = 0; i < s.length; i++) {
    ret += accent_map[s.charAt(i)] || s.charAt(i);
  }
  return ret;
};
Chamurappi
Profil
Reaguji na rada:
Co by to mělo dělat? Převádět Ě na ě a ú na Ú? Nic víc z uvedených kódů nejde vyčíst. Ten druhý by měl fungovat (na převod těchto dvou písmen).
Radek9
Profil
rad:
Nechápu, o co se snažíš. V klíči i v hodnotě máš totožný znak.
rad
Profil *
ok tak uz asi vim kde je problem jen nevim jak ho vyresit : kdyz se podivam do zdrojoveho kodu meho javascriptu v prohlizeci znaky s diakritikou jsou jinak formatovane .
netusim uz proc to je.
tady na jak psat web se entity automaticky zmenily na znaky takze predchozi prispevek vypada asi divne.


snazim se o toto : 'Ě' : 'ě',


snazim se o toto 'Ě':'ě',


omlouvam se kdyz zadam entitu jakpsatweb diskuze mi automaticky vypise spravny znak ja ale dostavam data prave v te entite tak to chci prevest nejak v javascriptu.
Petr ZZZ
Profil
rad:
diskuze mi automaticky vypise spravny znak
Tady na diskusi můžeš entitu rozbít pomocí klávesové mapy (obarvit, Ctrl + ↓, funkce, zamezit BB formátování), nebo přímým přidáním vykřičníku v hranatých závorkách:

&[!]#344;
Moderátor Chamurappi: Když odkazuješ na stejnou stránku, odkazuj laskavě na kotvu, ať se zbytečně neotvírá do nového okna…
rad
Profil *
ok diky za odpoved

o co se snazim o tohle bohuzel to nefunguje a ani asi nemuze protoze kdyz se podivam do zdrojoveho kodu
tak ty entity se prepisou na nejaky nesmysli v prohlizeci nevim proc a co s tim diky za odpoved
:
var accent_map = {
    '&#282;':'ě', '&#282;':'Ě', '&#353;':'š','&#352;':'Š','&#269;':'č',
    '&#268;':'Č', '&#345;':'ř', '&#344;':'Ř','&#382;':'ž','&#381;':'Ž',
    '&#253;':'ý', '&#221;':'Ý', '&#225;':'á','&#193;':'Á','&#237;':'í',    
    '&#205;':'Í', '&#233;':'é', '&#201;':'É','&#250;':'ú','&#250;':'Ú',
    '&#367;':'ů', '&#366;':'Ů', '&#271;':'ď','&#270;':'Ď','&#357;':'ť',
    '&#356;':'Ť', '&#328;':'ň', '&#327;':'Ň'    
   };
    
function accent_fold (s) {
  if (!s) { return ''; }
  var ret = '';
  for (var i = 0; i < s.length; i++) {
    ret += accent_map[s.charAt(i)] || s.charAt(i);
  }
  return ret;
};
_es
Profil
rad:
tak ty entity se prepisou na nejaky nesmysli v prohlizeci
No a do prehliadača sa dostanú odkiaľ?
Tak to oprav tam, teda v HTML kóde, či v niečom inom, kde sa ten HTML kód generuje.
Chamurappi
Profil
Reaguji na rada:
Šlo by to vyřešit jedním replace s callback funkcí, která zavolá String.fromCharCode. Ale nejsem si jistý, že to opravdu potřebuješ.

ty entity se prepisou na nejaky nesmysli v prohlizeci
Na jaké nesmysly?
rad
Profil *
jde mi o to to jenom preves taham s jsonu vysledek s entitama ... chci je prevest pomoci funkce uvadene nahore na ceske znaky.
nevim kde je chyba ale funkce nic neprevadi.
nevim jestly a co delam spatne ale prozenu to funkci a nezmeni se nic ...
var accent_map = {
    '&#282;':'ě', '&#282;':'Ě', '&#353;':'š','&#352;':'Š','&#269;':'č',
    '&#268;':'Č', '&#345;':'ř', '&#344;':'Ř','&#382;':'ž','&#381;':'Ž',
    '&#253;':'ý', '&#221;':'Ý', '&#225;':'á','&#193;':'Á','&#237;':'í',    
    '&#205;':'Í', '&#233;':'é', '&#201;':'É','&#250;':'ú','&#250;':'Ú',
    '&#367;':'ů', '&#366;':'Ů', '&#271;':'ď','&#270;':'Ď','&#357;':'ť',
    '&#356;':'Ť', '&#328;':'ň', '&#327;':'Ň'    
   };
    
function accent_fold (s) {
  if (!s) { return ''; }
  var ret = '';
  for (var i = 0; i < s.length; i++) {
    ret += accent_map[s.charAt(i)] || s.charAt(i);
  }
  return ret;
};
             
      var firma = data.firma;
      var ulice = data.ulice;
      var mesto = data.mesto;
     
             
      firma = accent_fold(firma);
      ulice = accent_fold(ulice);
      mesto = accent_fold(mesto);
      
      alert (firma);
_es
Profil
rad:
taham s jsonu vysledek s entitama
Ak chceš priamo text bez entít, prečo ho server neposiela ako trebárs text v UTF-8, teda, prečo to neopravíš na serveri?
A potrebuješ ich prevádzať? Veď pri zápise napríklad pomocou zmeny vlastnosti innerHTML sa entity na znaky prevedú automaticky.
Nemáš v tých entitách trochu zmätok? Ě a ě sú odlišné znaky s odlišnými entitami.
rad
Profil *
diky za radu ohledne innerHTML ale jak ho pouzit pro muj pripad ?

takhle data vkladam do formulare



$('input[name=firma]').val(firma);
$('input[name=ulice]').val(ulice);
//$('input[name="cast"]').val(data.cast_obce);
$('input[name=mesto]').val(mesto);
$('input[name=psc]').val(data.psc);
_es
Profil
rad:
Prevedenie textu s HTML entitami na textový reťazec bez entít spravíš jednoducho:
function prevodEntit(s) {
  var p = document.createElement("p");
  p.innerHTML = s;
  return p.innerHTML;
}
Môžeš tou funkciou „prehnať“ celý ten JSON reťazec.
rad
Profil *
super diky funguje to konecne diky moc za rady
Petr ZZZ
Profil
Reaguji na Chamurappiho:
odkazuj laskavě na kotvu

Před pár týdny jsem nepřišel na to, jak v rámci vlákna udělat z jednoduché kotvy #3 superkotvu #najdi(znaky) (myslím jsem se ji pokoušel zdvojit #3#najdi(), což nefungovalo), tak jsem to pustil z hlavy. Teď, když vidím, jak je to jednoduché, nějak nechápu, proč mě to nenapadlo. Asi už blbnu. Mimochodem, myslel jsem, že to není důležité. ;-)
Moderátor Chamurappi: Není to důležité a je to tu naprosto mimo téma. Stejně jako [#6].
_es
Profil
rad:
funguje to
Miesto tej funkcie by to aj tak bolo lepšie opraviť na serveri.
peta
Profil
Tady mam jakysi starsi priklad, treba bys to taky uzivil.
http://peter-mlich.wz.cz/web/js/prx/diakritika.htm
A jakysi novejsi, ale tam zas neni utf.
http://peter-mlich.wz.cz/web/js/prx/diakritika3.htm
_es
Profil
peta:
Márne rozmýšľam nad tým, čo majú tie dva odkazy v [#17] spoločné s [#10], kde sa z rada konečne podarilo vydolovať, o čo sa snaží.
peta
Profil
_es: Jo tak, ja myslel, ze resi klasickou diakritiku. A prave ty kody s entitami me zmatli, tak jsem to ani necetl. Mozna neco malo by se dalo vydolovat. A to, ze soubor musi byt zapsany jako utf a mit meta tag utf, jinak mu to spravne nebude brat ty spesl znaky.
rad
Profil *
jeste se k tomu vracim vyskytl se mi problem nektere znaky se i v pres tu funkci nezapisuji spravne je to kontkretne 'š' => '&#353;', a 'Š' => '&#352;',
je to nejspis tim co jsem nasel tady : http://stackoverflow.com/questions/4162270/dom-exception-when-assigning-html-entities-to-innerhtml

jak by jste to resily ?
ja to bohuzel na serveru opravit nemuzu! parsuju data z jine stranky proto to prevadeni.


 function prevodEntit(s) 
     {
     var p = document.createElement("p");
     p.innerHTML = s;
     return p.innerHTML;
     }        
     firma = prevodEntit(firma);
     ulice = prevodEntit(ulice);
     mesto = prevodEntit(mesto); 
_es
Profil
rad:
ja to bohuzel na serveru opravit nemuzu! parsuju data z jine stranky
Akým spôsobom v JS ťaháš dáta z inej stránky?

nektere znaky se i v pres tu funkci nezapisuji spravne je to kontkretne 'š' => '&#353;'
V akom prehliadači je prevodEntit('&#353;') niečo iné ako 'š'?
rad
Profil *
ve firefoxu se to prevede na neco jineho ! taham to pomoci php - jquery pouzivam pro ajax volani a odezvu.
Chamurappi
Profil
Reaguji na rada:
Na co jiného se to tedy převede? Opravdu je na vstupu entita &#353? Myslím, že moc nevěříme tvým pozorováním a živou ukázku asi dodat nechceš, takže jsme ve slepé uličce.

je to nejspis tim co jsem nasel tady : http://stackoverflow.com/questions/4162270/dom-exception-when-assigning-html-entities-to-innerhtml
Nepravděpodobné. Tobě zahlásí Firefox výjimku?
rad
Profil *
firefox prevede ą š
firefox mi vyjimku nehlasi netusim proc to tak je ostatni entity se prevadeji v poradku
_es
Profil
rad:
ja to bohuzel na serveru opravit nemuzu! parsuju data z jine stranky proto to prevadeni.
taham to pomoci php
Takže si to oprav na serveri - na tvojom - v PHP.

Máš stránku v kódovaní utf-8?
Chamurappi
Profil
Reaguji na _es:
Máš stránku v kódovaní utf-8?
Nemělo by hrát roli. I kdyby používal us-ascii, číselné entity musí fungovat vždy stejně.
_es
Profil
Chamurappi:
číselné entity musí fungovat vždy stejně.
To áno, no možno by sa výsledok tej funkcie mohol odlišovať pri rôznych kódovaniach, napríklad by entita nemusela byť zmenená na znak, ale by zostala bez zmeny.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0