ďťż
Podstrony
|
telcocafeSprawa ma się tak:Mam plik view_movie.php w którym jest opcja dodawani komentarzy. W view_movie.php includuję showcomments.php który wyświetla komentarze dla konkretnego filmiku W view_movie.php mam funkcję JS która przesyła dane do skryptu addcomment.php: <?php echo '<script type="text/javascript" language="Javascript"> function addComment() { advAJAX.post({ url: "'.$site_url.'add_comment.php", parameters : { "object" : "'.$_GET['id'].'", "comment" : document.getElementById("comment").value }, onSuccess : function(obj) { document.getElementById("komentarze_i").innerHTML = (obj.responseText); document.getElementById("comment").value = ''; advAJAX.get({ url: "'.$site_url.'showcomm.php?id='.$_GET['id'].'", onSuccess : function(obj) { document.getElementById("showcomm").innerHTML = (obj.responseText); } }); }, onerror : function(obj) { alert("Error: " + obj.status); } }); } </script>'; ?> Przy zapisywaniu do bazy nie dostają się do niej PL znaki tylko krzaki. Kodowanie bazy: latin2-general-ci Nagłówki w każdym pliku z którego korzystam poprzez AJAX: <?php header("Content-Type: text/html; charset=iso-8859-2"); ?> Jeżeli ktoś na coś wpadnie, byłbym wdzięczny za szybką pomoc... Z góry dzięki Użytkownik pawkow edytował ten post 01 maj 2007, 00:39 XmlHttpRequest korzysta tylko i wyłącznie z UTF-8 przy przesyłaniu danych. Podczas przesyłania jakiegoś tekstu przez ajaxa na początku w js dodaj funkcję encodeURIComponent żeby to wyglądało mniej więcej tak: text = encodeURIComponent(document.getElementById('komentarz').value) Poźniej już w kodzie PHP dodajesz funkcję która będzie zamieniać na polskie znaki function ConvertChars($string, $type = ISO88592_TO_UTF8) { $win2utf = array( "\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86", "\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81", "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a", "\xbf" => "\xc5\xbc", "\x8f" => "\xc5\xbb", "\x9f" => "\xc5\xba", "\xaf" => "\xc5\xb9", "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83" ); $iso2utf = array( "\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86", "\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81", "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a", "\xbc" => "\xc5\xba", "\xac" => "\xc5\xb9", "\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb", "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83" ); if ($type == ISO88592_TO_UTF8) return strtr($string, $iso2utf); if ($type == UTF8_TO_ISO88592) return strtr($string, array_flip($iso2utf)); if ($type == WIN1250_TO_UTF8) return strtr($string, $win2utf); if ($type == UTF8_TO_WIN1250) return strtr($string, array_flip($win2utf)); if ($type == ISO88592_TO_WIN1250) return strtr($string, "\xa1\xa6\xac\xb1\xb6\xbc", "\xa5\x8c\x8f\xb9\x9c\x9f"); if ($type == WIN1250_TO_ISO88592) return strtr($string, "\xa5\x8c\x8f\xb9\x9c\x9f", "\xa1\xa6\xac\xb1\xb6\xbc"); } Następnie przysłane dane dekodujesz za pomocą urldecode i konwertujesz za pomocą tej funkcji mniej więcej tak: text = urldecode(ConvertChars($text, 'UTF8_TO_ISO88592')); A ja wam powiem, że poradziłem sobie inaczej :) mb_convert_variables('ISO-8859-2', "ASCII,UTF-8,SJIS-win", $_POST['comment']); i działa idealnie :) dzięki za pomoc prościej krócej a ja jak zwykle robię wszystko na około a nie dostrzegam najprostszych rozwiązań |
|||
Sitedesign by AltusUmbrae. |