Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX (iso-8859-2) + MySQL (UTF-8)
Forum PHP.pl > Forum > XML, AJAX
3miel
Witam,

co mam zrobić w takiej sytuacji ze mam kodowanie na stronie ISO, a w bazie danych UTF-8:/ questionmark.gif

zoabczcie sami jak to wygąda:
echniczne.php?widok=zaawansowany&strona=Dane_techniczne' target='_blank

prosze o pomoc!!
060156
Przekoduj znaki z UTF-8 na ISO
Tutaj jest przykladowa funkcja dla polskich znakow
z UTF-8 na ISO-8859-16 dla ISO-8859-2
musisz zmienic kody wyjsciowe ...
  1. <?php
  2.  
  3.  function polish_from_utf8_to_iso($value) { // from utf8 to ISO-8859-16
  4.  $trans = array("\xc4\x84" => "\xa1", // A 
  5.  "\xc4\x85" => "\xa2",
  6.  "\xc4\x98" => "\xdd", // E 
  7.  "\xc4\x99" => "\xfd",
  8.  "\xc4\x86" => "\xc5", // C 
  9.  "\xc4\x87" => "\xe5", 
  10.  "\xc5\x81" => "\xa3", // L 
  11.  "\xc5\x82" => "\xb3",
  12.  "\xc5\x83" => "\xd1", // N 
  13.  "\xc5\x84" => "\xf1",
  14.  "\xc3\x93" => "\xd3", // O 
  15.  "\xc3\xb3" => "\xf3",
  16.  "\xc5\xbb" => "\xaf", // Z 
  17.  "\xc5\xbc" => "\xbf",
  18.  "\xc5\x9a" => "\xd7", // S 
  19.  "\xc5\x9b" => "\xf7",
  20.  "\xc5\xb9" => "\xac", // Z 
  21.  "\xc5\xba" => "\xae");
  22.  return strtr($value, $trans);
  23.  }
  24.  
  25.  
  26. ?>
sf
http://php.net/pg_client_encoding załatwia sprawę ..
3miel
Mam problem z tą funkcją pg_client_encoding(); jak ją zastosować w moim przypadku?
sf
http://pl2.php.net/manual/en/function.mysq...nt-encoding.php

nie zauwazylem, ze to mysql ;] ale mozna sie bylo domyslec..
3miel
Ale dalej nie rozumiem w czym ta funkcja ma mi pomóc...
sf
Eh, chyba się dziś nie wyspałem.. za pierwszym razem miała być funkcja:

http://pl.php.net/pg_set_client_encoding ktora umozliwa ustawienie kodowania bazy.. czyli np. na stronie mamy utf-8, a baze mamy w iso-8859-2, czyli w sumie to co potrzebujesz, tyle, ze w mysql

nie widze jednak czegos takiego w mysql.. hmm, może spróbuj czegoś takiego:
SET CHARACTER SET UTF-8; // (badz utf8)
SET NAMES UTF-8;

a jak nie to jak wczesniej kolega napisal.. tyle, ze mozna wykorzysta iconv, a nie pisac wlasne funkcje
3miel
Tylko że ja nie mam zmieniać kodowania na UTF-8 w MySAL lecz na ISO.

To co podałes nie działa. Spróbuje z iconv

Mój kod:
  1. <?
  2. $calosc .= iconv("UTF-8", "ISO-8859-1", $wers['tresc']."");
  3. ?>

no i u mnie na Krasnalu wywala błąd:
Fatal error: Call to undefined function: iconv() in c:\usr\krasnal\www\gsmserwis\admin\ajax\dane_techniczne.php on line 24

a na serwie ( echniczne.php?widok=zaawansowany&strona=Dane_techniczne' target='_blank ) wyswietla do 1 literki z ISO.
sf
a ustawienie CHARACTER_SET_CLIENT, CHARACTER_SET_RESULTS i COLLATION_CONNECTION tez nic nie daje?
060156
Mialem,
podobne problemy i dlatego napisalem swoja
funkcje. (polish_from_utf8_to_iso) Zwlaszcza pojawily sie powazne
problemy z przkodowywaniem óÓ.
Ale fakt, nalezy ustawic w mysql klijencie:

  1. mysql_query("set names utf8",$this->db);


a przedmowca cos mowi bez zrozumienia
o uzyciu funkcji, ktore zwracaja typ enoding do kodowania ...
3miel
060156 mogłbyś mi podać jakie kodowania maja mieć te znaki w tej twojej funkcji "polish_from_utf8_to_iso", bo bez tego nei moge kontynuować programowania mojego panelu ;(
060156
Przpraszam,zapomnialem dodac
z lewej strony sa 2 bajtowe UTF-8 kody polskich znakow
natomiast z prawej wstaw kody znakow w ISO ..
3miel
Dużo mi to nie pomogło... znalazłem tabele ( http://www.gajdaw.pl/varia/59-artykul/przy...belka/index.php ) ale jakoś nie wiem które ISO wybrac, a pozatym musze dawać "\" przed każdym kodem litery?

Byłbym wdziećzny jakbyć podaj 1 przykład...
FiDO
Kodowanie mozna tez zmienic poprzez funkcje mb_convert_encoding" title="Zobacz w manualu php" target="_manual
Nivo
Oto zmieniona funkcja z poprzedniego posta, dla standardu ISO-8859-2

Kod
function polish_from_utf8_to_iso($value) {    // from utf8 to ISO-8859-2
          $trans = array("\xc4\x84" => "\xA1", // A
                         "\xc4\x85" => "\xB1",
                         "\xc4\x98" => "\xCA", // E
                         "\xc4\x99" => "\xEA",
                         "\xc4\x86" => "\xC6", // C
                         "\xc4\x87" => "\xE6",
                         "\xc5\x81" => "\xA3", // L
                         "\xc5\x82" => "\xB3",
                         "\xc5\x83" => "\xD1", // N
                         "\xc5\x84" => "\xF1",
                         "\xc3\x93" => "\xD3", // O
                         "\xc3\xb3" => "\xF3",
                         "\xc5\xbb" => "\xAF", // Z
                         "\xc5\xbc" => "\xBF",
                         "\xc5\x9a" => "\xA6", // S
                         "\xc5\x9b" => "\xB6",
                         "\xc5\xb9" => "\xAC", // Z
                         "\xc5\xba" => "\xBC");
     return strtr($value, $trans);
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.