Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Problem ze zmianą kodowania
Forum PHP.pl > Forum > Przedszkole
nexis
Przenoszę tabelę zapisaną w UTF-8 do tabeli LATIN-2. Do zmiany kodowania używam funkcji:
  1. <?php
  2. iconv("UTF-8","ISO-8859-2", $row['title']);
  3. ?>

która niestety nie zawsze chce zadziałać, a mianowicie wyrzuca błąd:

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /import.php

kiedy spotyka znak już zakodowany prawidłowo do ISO-8859-2. Jakaś rada?

Widok z phpMyAdmin (niektóre znaki są prawidłowo zakodowane, inne nie):
tsharek
użyj //TRANSLIT lub //IGNORE
więcej w manualu iconv" title="Zobacz w manualu PHP" target="_manual
nexis
Przy użyciu

  1. <?php
  2. iconv("UTF-8","ISO-8859-2//IGNORE", $row['title']);
  3. ?>


otrzymuję następujący komunikat:

Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in /import.php

Poza tym nie ignoruje znaków, których nie potrafi zakodować, a je usuwa - to niestety nie może mieć miejsca.

//EDIT

Może mało elegancke, ale działa:

  1. <?php
  2. function decode ($string) {
  3. $length = strlen($string);
  4. for ($i=0; $i < $length; $i++) {
  5. switch (ord($string[$i])) {
  6. case 132:
  7. $string[$i] = '"';
  8. break;
  9. case 146:
  10. $string[$i] = "'";
  11. break;
  12. case 148:
  13. $string[$i] = '"';
  14. break;
  15. case 150:
  16. $string[$i] = '-';
  17. break;
  18. case 156:
  19. $string[$i] = 'ś';
  20. break;
  21. case 185:
  22. $string[$i] = 'ą';
  23. break;
  24. default:
  25. } 
  26. }
  27. return addslashes($string);
  28. }
  29. ?>
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.