Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Import danych do MySQL z Excela przez PMA i problem z kodowaniem
kecajs
post 27.10.2019, 19:02:39
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

Ostrzeżenie: (0%)
-----


Dzień dobry,
od dwóch dni przekopuję się przez książki, fora i rózne dokumentacje odnośnie sytuacji, w której się znalazłem, jednkaże - bez sukcesu.
Tak wygląda sytuacja.
Strona jest kodowana w utf8, w phpMyAdmin kodowanie znaków serwera ustawione jest na UTF-8 Unicode (utf8) i jest jeszcze w ustawieniach ogólnych parametr "Sortowanie połączenia z serwerem", ustawione na utf8_general_ci. Z kolei metoda porównywania napisów w samej bazie jest ustawiona na utf8_general_ci, choć doczytałem, że nie jest to parametr kluczowy, bo nei określa strony kodowej.
Dane utworzone i zapisane zostały w MS Excel. Na potrzeby bazy zapisałem plik jako CSV (rozdzielany przecinkami), następnie w Notepad++ przekonwertowałem zawartość na format UTF-8 i zapisałem. Tak przygotowany wsad zaimportowałem do MySQL, wykorzystując PMA. Przy imporcie kodowanie znaków pliku ustawione były jako utf-8, zaś format - CSV. Po imporcie polskie znaki w bazie są prawidłowo interpretowane.
Problem pojawia się, kiedy dane z bazy zaciągane są na stronę www. Na chwilę obecną wszystko robione jest lokalnie, z wykorzystaniem ostatniej wersji aplikacji WebServ (wersje: Apache 2.2.22; PHP 5.3.20; MySQL 5.5.21; Perl 5.14.2; MySQL Control 0.9.4; phpMyAdmin 3.5.5).
Dodatkowo, śladem porad z forum dokonałem konwersji strony kodowej zarówno bazy, jak i tabel komendami:
  1. ALTER DATABASE 'nazwa' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  1. ALTER TABLE 'tabela' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Bez zmian. Do łączenia się z bazą korzystam ze skryptu, wykorzystującego klasę dbconn o treści:
  1. <?php
  2.  
  3. abstract class Singleton {
  4.  
  5. protected static $_instance;
  6.  
  7. protected function __construct() {
  8.  
  9. }
  10.  
  11. public static function instance() {
  12.  
  13. }
  14.  
  15. }
  16.  
  17. class dbconn extends Singleton {
  18.  
  19. private $_conn;
  20. private $server = 'localhost';
  21. private $login = 'user';
  22. private $password = 'pass';
  23. private $database = 'database';
  24.  
  25. protected function __construct() {
  26. $this->_conn = mysql_connect($this->server, $this->login, $this->password) or die(mysql_error());
  27. mysql_select_db($this->database, $this->_conn) or die(mysql_error());
  28. }
  29.  
  30. public static function instance() {
  31. if (is_null(self::$_instance)) {
  32. self::$_instance = new dbconn();
  33. }
  34. return self::$_instance;
  35. }
  36.  
  37. public function query($query) {
  38. return mysql_query($query);
  39. }
  40.  
  41. public function insert($query) {
  42. if (mysql_query($query)) {
  43. } else {
  44. return 0;
  45. }
  46. }
  47.  
  48. public function select($query) {
  49. return mysql_num_rows(mysql_query($query));
  50. }
  51.  
  52. public function escape($string) {
  53. return htmlspecialchars(strip_tags($string));
  54. }
  55.  
  56. }
  57. ?>

Czytałem, że mozna zmienić kodowanie podczas łączenia się z bazą, ale nie mam pojęcia jak i w którym miejscu.
Będę wdzięczny za konstruktywne wskazówki, bez odsyłania do innych postów, for, czy porad "w ciemno" - wiele z nich już przerabiałem.
Pozdrawiam,
Jacek
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:56