Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kodowanie znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
one_eddie
Przeszukalem forum, dokumentacje mysql. Sam probowalem cos wykombinowac.

Niestety nie udalo mi sie jak narazie pozbyc problemu kodowania znakow. Dane wprowadzam w kodowaniu iso-8859-2 (mysql-owe latin2).

Mam serwer MySQL 4.1.12a-nt + obsluguje baze na phpMyAdmin 2.6.4-rc1.

Nie moge zmusic phpMA do wyswietlania znakow w ISO, caly zas trzyma sie tego utf, jak mozna to zrobic?

jak widac na zalaczonym obrazku serwer mimo moich prob konfiguracji i zmiany zmiennych default-character-set oraz prob zmiany za pomoca zapytania Set variable=value; dalej trzyma sie kodowania utf.



co nalezy zrobic aby zmienic kodowanie phpMA oraz serwera na iso-8859-2?

// edit:
Udalo mi sie zmienic kodowanie w phpMA na iso-8859-2 ale kiedy zagladam do zrodla strony to dalej w meta-charser jest utf questionmark.gif pozatym kiedy dodaje dane zamiast update ... pole =vartosc pojawia sie update ... CONVERT( pole USING utf8 )=wartosc?

o co chodzi?

// edit:
Juz caly dzien walcze ze zrodlami phpMA (wer 2.6.4-rc1) znalazlem miejsce gdzie wciskany na sile jest uft-8. najgorsze ze zglupialem w momencie gdy po zakomentowaniu kodu i zapisaniu pliku problem nie znikl sadsmiley02.gif

oto kod ktory umiescilem w komentarzu (plik: database_interface.lib.php):
  1. <?php
  2. if (PMA_MYSQL_INT_VERSION >= 40100)
  3. {
  4.  
  5. // If $lang is defined and we are on MySQL >= 4.1.x,
  6. // we auto-switch the lang to its UTF-8 version (if it exists and user didn't force language)
  7. /*if (!empty($GLOBALS['lang']) && (substr($GLOBALS['lang'], -5) != 'utf-8') && !isset($GLOBALS['cfg']['Lang']))
  8. {
  9. $lang_utf_8_version = substr($GLOBALS['lang'], 0, strpos($GLOBALS['lang'], '-')) . '-utf-8';
  10. if (!empty($GLOBALS['available_languages'][$lang_utf_8_version])) 
  11.  {
  12. $GLOBALS['lang'] = $lang_utf_8_version;
  13. $GLOBALS['charset'] = $charset = 'utf-8';
  14. }
  15. }*/
  16.  
  17. // and we remove the non-UTF-8 choices to avoid confusion
  18.  /* if (!defined('PMA_REMOVED_NON_UTF_8'))
  19. {
  20. $tmp_available_languages = $GLOBALS['available_languages']; 
  21. $GLOBALS['available_languages'] = array();
  22. foreach ($tmp_available_languages AS $tmp_lang => $tmp_lang_data)
  23. {
  24. if (substr($tmp_lang, -5) == 'utf-8')
  25. {
  26. $GLOBALS['available_languages'][$tmp_lang] = $tmp_lang_data;
  27. }
  28. } // end foreach
  29. unset($tmp_lang, $tmp_lang_data, $tmp_available_languages);
  30. define('PMA_REMOVED_NON_UTF_8',1);
  31. }*/
  32.  
  33. /*$mysql_charset = $GLOBALS['mysql_charset_map'][$GLOBALS['charset']];
  34. if ($is_controluser || empty($collation_connection) || (strpos($collation_connection, '_') ? substr($collation_connection, 0, strpos($collation_connection, '_')) : $collation_connection) == $mysql_charset) {
  35. PMA_DBI_query('SET NAMES ' . $mysql_charset . ';', $link, PMA_DBI_QUERY_STORE);
  36. } else {
  37. PMA_DBI_query('SET CHARACTER SET ' . $mysql_charset . ';', $link, PMA_DBI_QUERY_STORE);
  38. }
  39. if (!empty($collation_connection)) {
  40. PMA_DBI_query('SET collation_connection = '' . $collation_connection . '';', $link, PMA_DBI_QUERY_STORE);
  41. }
  42. if (!$is_controluser) {
  43. $collation_connection = PMA_DBI_get_variable('collation_connection',  PMA_DBI_GETVAR_SESSION, $link);
  44. $charset_connection  = PMA_DBI_get_variable('character_set_connection', PMA_DBI_GETVAR_SESSION, $link);
  45. }
  46.  
  47. // Add some field types to the list
  48. // (we pass twice here; feel free to code something better :)
  49. if (!defined('PMA_ADDED_FIELD_TYPES')) {
  50. $GLOBALS['cfg']['ColumnTypes'][] = 'BINARY';
  51. $GLOBALS['cfg']['ColumnTypes'][] = 'VARBINARY';
  52. define('PMA_ADDED_FIELD_TYPES',1);
  53. }*/
  54.  
  55. } else {
  56. require_once('./libraries/charset_conversion.lib.php');
  57. }
  58. ?>


Czy ktos mogl by mi powiedziec dlaczego dalej ustawiany jest charset na utf i w ktorym miejscu sie to odbywa? Przeszukalem caly kod i nigdzie nie znalazlem zmiany zmiennej $charset = 'utf-8' (pozatymi ktore pokazalem). uzywalem regexa do wyszukiwania (\&charset.*\'utf-8\')
FanFataL
Po nawiązaniu połączenia z bazą wyslij takie zapytanie:
  1. SET NAMES latin2

Powinno przynieść oczekiwany skutek

Pozdrawiam winksmiley.jpg
...
one_eddie
Cytat(FanFataL @ 2005-09-09 23:49:48)
Po nawiązaniu połączenia z bazą wyslij takie zapytanie:
  1. SET NAMES latin2

Powinno przynieść oczekiwany skutek

Pozdrawiam winksmiley.jpg
...

to co podales + set character set latin2; to tylko sposob na zmiane wartosci zmiennych mysql. Zreszta zdazylem juz do tego dojsc. Nadal pozostaje problem usuniecia utf-a z phpMA?
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.