Kodowanie znaków z MSSQL za pomocą PHP

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

2

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

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:

        "Database"=>'name',
        "ConnectionPooling"=>0,
        "CharacterSet"=>"UTF-8"
        ];
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ę?

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.

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 :)

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

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1