Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowaniem znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
ARThe
Mam problem z polskimi znakami.

Aplikacja wprowadzająca dane do bazy wprowadza je z kodowaniem iso-8859-2
Baza danych mysql do której wprowadza te dane ma kodowanie latin2

A moja aplikacja (php 5) czytająca dane z tej bazy posiada kodowanie UTF-8
Niestety zamiast polskich znaków pojawiają się krzaki.

Niestety nie mogę ingerować w kodowanie aplikacji wprowadzającej dane oraz w kodowanie bazy danych.
Jedynie co moge zmienić to kodowanie aplikacji czytającej dane z bazy.

Czy jest jakaś możliwość zmiany kodowania lub zastosowanie funkcji konwertujących aby polskie znaki były dobrze czytane questionmark.gif

proszę o szybką pomoc bo sprawa jest pilna

z góry dziękuję!
Tomplus
Spróbuj tegj funkcji:

  1. <?php
  2. function convert ($string, $type)
  3. {
  4. $win2utf = array(
  5.  "xb9" => "xc4x85", "xa5" => "xc4x84", "xe6" => "xc4x87", 
  6.  "xc6" => "xc4x86", "xea" => "xc4x99", "xca" => "xc4x98",
  7.  "xb3" => "xc5x82", "xa3" => "xc5x81", "xf3" => "xc3xb3",
  8.  "xD3" => "xc3x93", "x9c" => "xc5x9b", "x8c" => "xc5x9a",
  9.  "xbf" => "xc5xbc", "x8f" => "xc5xbb", "x9f" => "xc5xba",
  10.  "xaf" => "xc5xb9", "xf1" => "xc5x84", "xD1" => "xc5x83",
  11. );
  12. $iso2utf = array(
  13.  "xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", 
  14.  "xc6" => "xc4x86", "xea" => "xc4x99", "xca" => "xc4x98",
  15.  "xb3" => "xc5x82", "xa3" => "xc5x81", "xf3" => "xc3xb3", 
  16.  "xD3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a",
  17.  "xbc" => "xc5xba", "xac" => "xc5xb9", "xbf" => "xc5xbc", 
  18.  "xaf" => "xc5xbb", "xf1" => "xc5x84", "xD1" => "xc5x83"
  19. );
  20. if ($type == 'ISO-8859-2->UTF-8' || $type == 'iso2utf') {
  21.  return strtr($string, $iso2utf);
  22.  }
  23. else if ($type == 'UTF-8->ISO-8859-2' || $type == 'utf2iso') {
  24.  return strtr($string, array_flip($iso2utf));
  25.  }
  26. else if ($type == 'WINDOWS-1250->UTF-8' || $type == 'win2utf') {
  27.  return strtr($string, $win2utf);
  28.  }
  29. else if ($type == 'UTF-8->WINDOWS-1250' || $type == 'utf2win') {
  30.  return strtr($string, array_flip($win2utf));
  31.  }
  32. else if ($type == 'ISO-8859-2->WINDOWS-1250' || $type == 'iso2win') {
  33.  return strtr($string, "xa1xa6xacxb1xb6xbc", "xa5x8cx8fxb9x9cx9f");
  34.  }
  35. else if ($type == 'WINDOWS-1250->ISO-8859-2' || $type == 'win2iso') {
  36.  return strtr($string, "xa5x8cx8fxb9x9cx9f", "xa1xa6xacxb1xb6xbc");
  37.  }
  38. }
  39. ?>
JoShiMa
Cytat(ARThe @ 29.07.2008, 22:28:24 ) *
A moja aplikacja (php 5) czytająca dane z tej bazy posiada kodowanie UTF-8
Niestety zamiast polskich znaków pojawiają się krzaki.

A musi mieć UTF-8?

Nie wystarczy po połączeniu z bazą dać:
  1. <?php
  2. mysql_query("set names 'utf-8'");
  3. ?>
ARThe
Nie musi mieć UTF-8 wystarczy tylko że będzie dobrze wczytywać polskie znaki
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.