Autor Zpráva
juriad
Profil
Postup:
1) Nakopíruj toto do HTML
2) Ulož a získej odkaz
3) Pouze prvních 8 řádek je uložených, viz: Živá ukázka

<table>
  <tr>
    <th>
      Capability
    </th>
  </tr>
  <tr>
    <td class=cap>
      �� <span class=name>Owner</span>
    </td>
  </tr>
</table>

Vypadá to, že se to rozsype přesně tam, kde je ten symbol korunky: www.utf8icons.com/character/128081/crown. Když ji nahradím za HTML entitu, tak to funguje: Živá ukázka
Podle mě to je způsobené tím, že ta ikonka je uložená pomocí 4 bytů v UTF-8 kódování (viz tabulka dole na unicode-table.com/en/1F451) Pokud se ukázky ukládají do databáze a je to MySQL a znaková sada je utf8 a nikoli utf8mb4, tak bych čekal podobné problémy.

Pokud se nemýlím, tak za tím je Strawberry, ale ten už tu měsíc nebyl.


A rovnou nahlašuju, že i tady se korunka neuloží správně, takže si místo dvou otazníků představte pěknou zlatu korunku posázenou drahokamy (a toto je asi poprvé od diktátů na střední škole, kdy jsem napsal slovo "drahokamy"). Alespoň to však neshltne zbytek příspěvku.
Str4wberry
Profil
Je to utf8_general_ci.

Na hostingu je MySQL 5, kde asi utf8mb4 není.

Musel bych to asi přestěhovat někam jinam :-(

Koukám, že je problém jakékoliv emoji ��. A obdobný problém má i tato diskuse.
Kajman
Profil
Diskuse má jiný. Zde je iso-8859-2.
Str4wberry
Profil
Jo, tady se to nezobrazí, ale aspoň to nezruší zbytek obsahu.

Rád bych to opravil, ale bylo by dost pracné to zmigrovat.

Nevím, jestli to má pro těch pár desítek lidí, co tam denně chodí, úplně smysl.
Kajman
Profil
Str4wberry:
Na hostingu je MySQL 5, kde asi utf8mb4 není.

Od mysql verze 5.5.3 by měl být tento charset k dispozici.


Tady na diskusi to vypadá, že to poláme javascript. Když se totiž vypne a nechá se prohlížeč, aby převedl znak na html entitu, tak se převede správně - 👑.
_Jan Tvrdík
Profil *
Kajman:
Nevím jestli to někdo zvládne nasadit, ale tahle úprava by to měla opravit. Surrogate vzorce jsou z en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates

var encodeURIComponent = (function()
{
  var euc = encodeURIComponent;
  var latin2 = " Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙";
  return function(string, encoding)
  {
    if(encoding && encoding.toLowerCase() == "iso-8859-2")
    {
      return string.replace(/\r?\n/g, "\r\n").replace(/([\u0000-\u007F]+)|([\uD800-\uDBFF][\uDC00-\uDFFF])|[\u0080-\uFFFF]/g, function(m, m1, m2)
      {
        if(m1) return euc(m);
        if(m2) return "%26%23" + (0x10000 + (m2.charCodeAt(0) - 0xD800) * 0x400 + m2.charCodeAt(1) - 0xDC00) + "%3B";
        var p = latin2.indexOf(m);
        if(~p) return "%" + (p + 160).toString(16);
        return "%26%23" + m.charCodeAt(0) + "%3B";
      });
    }
    return euc(string);
  };
})();
Kajman
Profil
Jan Tvrdík:
Výtečně, nasazeno zatím do sandboxu. Můžeš si nasadit 👑.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0