Witam,
podczas pisania skryptu natrafiłem na kolejny problem, tym razem z kodowaniem znaków. Nie bardzo mogę sobie poradzić ze znalezieniem miejsca wystąpienia problemu, ale gdzieś wysypuje mi się kodowanie znaków. Skrypt działa w ten sposób, że pobiera dane z pliku *.csv, dokonuje drobnej operacji na ciągach znaków i insertuje to do bazy. Plik csv kodowany jest w UTF-8, plik skryptu również, w bazie ustawione jest kodowanie na utf-8. Skrypt musi przemielić i wprowadzić do bazy opisy w języku polskim, niemieckim i rosyjskim. Aktualnie sprawdzałem jedynie na przypadku języka niemieckiego i zamiast wszystkich umlautów mam "?questionmark.gif" lub "¤". Kombinowałem już z konwertowaniem z ansi na utf, z utf na ansi i nic nie wyszło - za każdym razem to samo. Bardzo proszę o jakieś naprowadzenie...

  1. <?php
  2. $c = mysql_connect('x', 'x', 'x');
  3. $s = mysql_select_db('a');
  4. $uchwyt = fopen("code.csv", 'r');
  5. while(($data = fgetcsv($uchwyt, 0, " ")) !== false) {
  6. list($kod, $pl, $de, $en, $ru) = $data;
  7. $s = $kod;
  8. for($i = 0; $i < 1; $i++) {
  9. $x = preg_replace('/(00)+$/', '', $s);
  10. if(mysql_query("INSERT INTO a(code, def, language) VALUES('".$x."', '".$de."', '80')")) {
  11. echo("INSTERT ok<br>");
  12. } else {
  13. die(mysql_error()."<br>");
  14. }
  15. }
  16. }
  17. ?>


ERRATA:
pomogło po połączeniu z bazą w skrypcie:
  1. $a = mysql_query("SET CHARACTER SET utf8");


smile.gif