php + MySQL - problemy z kodowaniem

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ć?

0

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

  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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1