Easy AJAX inline text edit 2.0 - problem z polskimi znakami | DailyWeb.pl

Easy AJAX inline text edit 2.0 - problem z polskimi znakami

Opublikowano 7 lat temu -


Pisałem wcześniej o skrypcie pozwalającym na edycje treści po kliknięciu - aktualnie pojawił się problem podczas korzystania z niego. Otóż skrypt nie był przygotowany na polskie znaki. Wszelkie dane wysyłane są metodą GET, w związku z tym trzeba było przekonwertować wszelkie ogonki które wystąpią.

Jak to zrobić?
Zakładając, że korzystacie z UTF-8 wystarczy wywołać poniższą funkcję:

function charset_utf_fix($string)
{
$utf_iso = array(
"%u0104" => "Ą",
"%u0106" => "Ć",
"%u0118" => "Ę",
"%u0141" => "Ł",
"%u0143" => "Ń",
"%u015A" => "Ś",
"%u0179" => "Ź",
"%u017B" => "Ż",
"%u0105" => "ą",
"%u0107" => "ć",
"%u0119" => "ę",
"%u0142" => "ł",
"%u0144" => "ń",
"%u015B" => "ś",
"%u017A" => "ź",
"%u017C" => "ż"



);
return str_replace(array_keys($utf_iso), array_values($utf_iso), $string);
} 

Następnie pobieraną treść, należy użyć powyższej funkcji:

$_GET['content'] = charset_utf_fix(stripslashes(strip_tags($_GET['content'],"<br><p><img><a><br /><strong><em>")));

Niestety to nie wszystko. Problem pojawia się z literką "ó", gdyż dalej pojawiał się krzak. Najprościej było by zmienić metode wysyłania danych na POST, niestety moje umiejętności w zakresie javascript nie są zbyt ogromne by pozwolić mi na modyfikacje kodu, więc sprawe rozwiązałem poleceniem iconv

$_GET['content'] = iconv("ISO-8859-2", "UTF-8", $_GET['content']);

O dziwo, wysyłałem wartość z dokumentu ustawionego na kodowanie UTF-8 do dokumentu z tkaim samym kodowaniem - jednak sama literka "ó" jak sie okazało była zakodowana ISO-8859-2 ;)
Mam nadzieje, że dla kogoś powyższa treśćbędzie przydatna.
Swoją drogą, chyba założe stowarzyszenie na rzecz usunięcia wszelkich ogonków z języka polskiego, gdyż przez nie tylko same problemy ;)