Kodowanie znaków z MSSQL za pomocą PHP

Kodowanie znaków z MSSQL za pomocą PHP
MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Cześć,
mam problem z kodowaniem znaków w mojej apce webowej.
Używam Notepad++ (tak, wiem, że są lepsze edytory), wyświetlam dane z bazy MSSQL za pomocą PHP i w momencie napotkania na polski znak dostaję to, co na screenie.
Tak jest z wszystkimi polskimi znakami.
W pliku wykorzystuje <meta charset="utf-8"> a sama baza to Polish_CI_AS.

Czy miałby ktoś rozwiązanie mojego problemu lub widnieje gdzieś na forum? (szukałem ale nie znalazłem)
screenshot-20220317122521.png

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

na 99% musisz ustawić odpowiednie (UTF8) kodowanie po stronie klienta (tego czym się z PHP do bazy łączysz)

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
3

Ten brak znaków jest w przeglądarce czy linii komend?
Spróbuj na początku pliku dać:
ini_set('mssql.charset', 'UTF-8');
lub na samym połączeniu:

Kopiuj
        "Database"=>'name',
        "ConnectionPooling"=>0,
        "CharacterSet"=>"UTF-8"
        ];
WL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1084
1

Wszystko pięknie ładnie, ale collation Polish_CI_AS w MSSQL to jest dokładnie kodowanie znaków Windows1250 case insensitive, accent sensitive
A więc NIE jest to UTF8.

Nie wiem co i jak PHP robi, ale ustawienie kodowania na kliencie niezgodnego z bazą danych raczej nie rozwiąże problemu.
Czy rozwiąże w przypadku PHP, bo robi automagiczną konwersję?

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Więc co powinienem zrobić?
Zauważyłem, że jak w pliku php.ini zmieniam default_charset to zmieniają się znaki ale nigdzie nie wyświetla mi polskich, w dodatku czasami psują się te napisane "z palca" a nie wyciągane z bazy danych.

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

@jurek1980:
Dokładne rozwiązanie: do pliku z połączeniem do bazy, do sqlsrv_connect dodałem "CharacterSet"=>"UTF-8".

Dziękuję za pomoc :)

miccom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tychy
  • Postów: 25
0

A pokaż, jaki tekst masz w bazie danych?
W BD masz polskie znaki?

Sprawdź jeszcze, czy w swoim IDE masz ustawione kodowanie znaków.
Musisz mieć ustawione UTF-8 bez BOM

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

@miccom: temat został rozwiązany ponad 3 miechy temu - próbujesz wygrać konkurs na złoty szpadel???

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.