Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MSSQL + PHP + francuskie znaki
kr27
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 20.03.2007

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


Witam

Czy orientuje się ktoś z Was jak poprawnie wyświetlać i zapisywać francuskie znaki w PHP w MSSQL ?
W Enterprise Manager do tabeli wpisuję np:
àâçéèêëîïôûùüÿœæÀÂÇÉÈÊËÎÏÔÛÙÜŸŒÆ

Następnie wykonuję kod:
echo iconv("Windows-1250", "UTF-8//TRANSLIT//IGNORE", $pole);

W rezultacie mam:
aâçéeeëîiôuuüyoaAÂÇÉEEËÎIÔUUÜYOA

Wiem, że znaku "à" nie ma w kodowaniu 1250 i w tym problem - więc jakie to kodowanie powinno być skoro w tej samej kolumnie mam też zapisane dane w języku polskim, niemieckim oraz czeskim (z nimi nie ma żadnego problemu)

Z góry dziękuję
Pozdrawiam






Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Musisz zrobić to tak:
1. Konwersja kodowania UTF-8 => UCS-2
2. Zapis danych w postaci hexadecymalnej
3. Wstawienie do zapytania, które te binarne dane skonwertuje na typ kolumny nvarchar


$utf8Str = "zażółć gęślą jaźń àà àààà àà ZAŻÓŁĆ GĘŚLĄ JAŹŃ";
  1. $ucs2Str = iconv( "UTF-8", "UCS-2LE", $utf8Str );
  2.  
  3. $hex = unpack( "H*", $ucs2Str );
  4. $hexStr = "0x" . $hex[1];
  5.  
  6. $dbh->exec( "INSERT INTO tabela ( kolumna_nvarchar ) VALUES ( CONVERT( nvarchar( MAX ), " . $hexStr . " ) )" );


Nie wiem tylko jak wstawić dane binarne w postaci 0x0123abcd jako parametr 'prepared statement' - musisz sobie poszukać na google.

Dodatkowo zapytania tworzone w ten sposób będą długie (chodzi o ilość znaków, nie czas wykonywania) - to też może powodować problemy, ale nie jestem pewien.

Ten post edytował Noidea 30.01.2011, 13:55:58
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 23:11