Oznámení
Vážný problém s diakritikou v komentářové referenci
před 12 lety
- juneau
- Člen | 166
Mám ve svém redakčním systému problém – v komentářích. Čtenář
Žluťoučký kůň uloží komentář. Přijde Pepa, a hodlá
reagovat na jeho komentář. Klikne na patřičný odkaz a do komentářového
pole se vloží tradiční (např) [3]
.
Problémem je, že při ukládání komentáře a po zavolání reference handleru Texy nějak zatuhne a ve výsledném komentáři je uložena pouze část komentáře před odkazem na jiný komentář, jehož autorem je někdo s diakritikou ve jménu. Není-li diakritika, je vše ok.
Mam konfiguraci texy:
$texy = new Texy();
$texy->encoding = 'windows-1250';
$texy->addHandler('newReference', 'newReferenceHandler');
// + dalsi
function newReferenceHandler($parser, $refName)
{
global $komentare_jmena,$komentare_id; // z externiho kodu
$names = $komentare_jmena;
if (!isset($names[$refName])) return FALSE; // it's not my job
$name = $names[$refName]; // some range checing
$el = TexyHtml::el('a');
$el->attrs['href'] = '#comm-' . $refName; // set link destination
$el->attrs['class'][] = 'comment'; // set class name
$el->attrs['rel'] = 'nofollow'; // enable rel="nofollow"
$el->setText("[$refName] $name:"); // set link label (with Texy formatting)
return $el;
}
Celým handlerem projde jméno s diakritikou, bez problémů, ale z texy se již nic rozumného nevrátí. Dělá to od upgradu na v. @version 2.0 BETA 2 (Revision: 166, Date: 2007/08/23 03:02:24). Testováno na PHP5 i PHP4.
Editoval juneau (2. 12. 2007 21:37)
před 12 lety
- juneau
- Člen | 166
Jsa vědom toho, že problém způsobuje diakritika v proměnné
$name
ve zmíněné funkci reference (a tedy v nějaká
následující funkci neočekávané znaky), provedl jsem toto
znásilnění PHP:
$el->setText("[$refName] ".iconv('windows-1250','utf-8',$name).":");
Od té doby korektně funkční (+ otestování na nejnovější verzi Texy!). Každopádně si myslím, že je to bug a ne korektní chování.
před 12 lety
- David Grudl
- Nette Core | 6806
Celé Texy vnitřně pracuje v UTF-8. Nastavení
$texy->encoding
slouží jen k tomu, aby se při spuštění
převodu text z uvedeného kódování do UTF-8 převedl a na konci zase
převedl zpět. Takže i všechny handlery apod. musí být napsané
v UTF-8.
před 12 lety
- juneau
- Člen | 166
Áha, to mě nenapadlo. Konfigurační soubor i s handlery je windows-1250. Takže se přizpůsobím.