php + MySQL - problemy z kodowaniem

php + MySQL - problemy z kodowaniem
migajek
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 6 lat
  • Postów:370
0

Piszę własnego mini-CMS`a (opartego na PHP + MySQL) i napotkalem na taki problem:
kodowaniem standartowym jest iso-8859-2. Mam w panelu administratora objekt textarea do którego wpisuje tresc artykulu i tresc ta jest zapisywana do MySQL... Na stronie polskie znaki wyswietlane sa prawidlowo (przy czytaniu arta) ale problemy zaczynaja sie gdy chce edytowac artykul... Po zaladowaniu jego tresci do textarea, wszystkie polskie znaki sie krzacza (nawet te ktore nie powinny, np "ć" nie zmieni sie z kodowaniem...) Co zrobić?


Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0

Kiedyś znalazłem taką funkcyjkę do zamiany kodowania z poziomu PHP:

Kopiuj
  define('UTF8_TO_ISO88592', 1);
  define('ISO88592_TO_UTF8', 2);
  define('WIN1250_TO_UTF8', 3);
  define('UTF8_TO_WIN1250', 4);
  define('ISO88592_TO_WIN1250', 5);
  define('WIN1250_TO_ISO88592', 6);

  function plCharset($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",
      "\x9f" => "\xc5\xbc", "\x8f" => "\xc5\xbb",
      "\xbf" => "\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\xbc", "\xac" => "\xc5\xbb",
      "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
      "\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");
  }

echo plCharset('Testowy tekst z pąłśkimi łitęrkąmi', UTF8_TO_ISO88592);

Oczywiście to zastosowanie jest przykładowe, możesz zamieniać w obie strony z trzech stron kodowych: ISO, WIN i UTF.


Grunt to uziemienie...
migajek
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 6 lat
  • Postów:370
0

Dzieki, sprobuje tego... Choc jak patrzylem na zrodelka php-fusion czy mambo to tam nic takiego nie znalazlem.... [!!!]
No ale dzieki :) [browar]


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.