Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie czcionki PHP+MS SQL
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
hesus
Witam,
Mam stronę kodowaną w iso-8859-2. Na nej formularz.
Formularz przekazuje dane tekstowe do skryptu, a skrypt do bazy MS SQL.
Na stronie wyświetlam zawartość bazy i zamiast polskich znaków mam krzaki.
Jak zachować zgodność kodowania w bazie i w formularzu?
Wcześniej robiłem takie rzeczy z MySQL i nie miałem takich problemów.
Proszę o help
Leezard
a sprawdz co masz w bazie, czy tez krzaczki czy normalne cos, ale podejrzewam ze krzaki. jesli tak to pewnie kodowanie w bazie jest nie takie. ustaw kodowanie, tylko nie wiem jak w mssql to leci winksmiley.jpg
hesus
Bazie krzaczki rzecz jasna. Tylko według mojego skromnego rozumku jeśli tekst jest w iso-8859-2, zapisuję go do bazy w formacie xxx a później znowu go odczytuję na stronę w iso-8859-2 to nie powinno być krzaków. No ale zakłdadając, że to kwestia ustawienia kodowania w bazie danych to... hmmm... ja też nie wiem, jak to leci smile.gif
No1B
napisz jeszcze w jakiej "kolacji" (strona kodowa) masz baze
Seth
Przenosze: php Poczatkujacy >> Bazy danych\ MS SQL Server
hesus
Polish_CI_AS
No1B
kodowanie jak najbardziej prawidlowe dla pl.

zmien na stronce wyswietlajacej na
Kod
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">


powinno byc ok. jesli nie to sprawdz w php.ini jakie masz ustawienia dla strony kodowej - tak sobie kombimuje

Pozdrawiam

edit: aha - sprobuj zmienic typy pol z char/varchar/text (8 bitowe -> 1250) and nchar/nvarchar/ntext (Unicode)
hesus
W php.ini mam klasycznie iso-8859-2. Czy nie da się jakoś uniknąć stosowania windowsowego kodowania? Nikt go prawie nie poleca, jeśli chodzi o www.
No1B
dla kolacji POLISH_CI_AS strona kodowa jest 1250

  1. SELECT collationproperty('POLISH_CI_AS', 'CodePage')


sprobujemy cosik wykombinowac - moze jakas funkcyjka
hesus
Tych polskich kolacji (nie ma jak dobre, polskie żarcie) jest spora lista. Nie ma wśród nich żadnego odpowiednika iso-8859-2? W ostateczności użyję łindołsa, ale raczej go unikam.
No1B
wszystkie sa 1250. sam sprawdz:
  1. SET nocount ON declare @cp varchar(50)
  2. declare #cp_cursor cursor for
  3. SELECT name
  4. FROM ::fn_helpcollations() WHERE name LIKE '%polish%'
  5.  
  6. open #cp_cursor
  7. fetch next
  8. FROM #cp_cursor into @cp while @@fetch_status=0
  9. begin SELECT @cp,collationproperty(@cp, 'CodePage')
  10. fetch next
  11. FROM #cp_cursor into @cp end
  12. close #cp_cursor
  13. deallocate #cp_cursor
  14. SET nocount off


kodowanie 1250 nie jest straszne - ktos kiedys powiedzial ze 1250 jest be bo z ms i teraz wszyscy jada na 8859-2.
Btw - nie chce tutaj wywolywac zadnych kodowych wojen.

Pozdrawiam
hesus
Nie no, za iso to ja też nikomu w mordę nie dam smile.gif ale zmieniłem wszędzie (strony, php.ini) na windows-1250 a krzaki jak były, tak są nadal.
No1B
a w przegladarce?

edit: a jak podgladasz zawartosc bazy jakims np. query analyzerem to tez masz krzaki?
jesli tak - to albo:
- nie masz w systemie zainstalowanych pl lokali albo
- masz takie dane w tablicy.

zrob tak
  1. CREATE TABLE a (
  2. k varchar(10) NOT NULL
  3. )
  4. go
  5.  
  6. INSERT
  7. INTO a SELECT 'ąąććńńłł'
  8. go
  9.  
  10. SELECT *
  11. FROM a


podejrzyj to zarowno poprzez www jak i qa

Pozdrawiam
nixxon
witam

dolacze sie do dyskusji jako ze sam mam podobny problem. jak probuje wpisac przez strone www jakies dane z naszymi lokalnymi literkami to w bazie zapisuja sie krzaki i odczytuje przez www takze krzaczki, jesli recznie dodam do bazy rekord z polskimi literkami to takze wypisuje jakies krzaki...

uzywam kodowania iso8859-2

jakies pomysly questionmark.gif
Watcher01
Cytat(hesus @ 25.03.2005, 11:46:30 ) *
Witam,
Mam stronę kodowaną w iso-8859-2. Na nej formularz.
Formularz przekazuje dane tekstowe do skryptu, a skrypt do bazy MS SQL.
Na stronie wyświetlam zawartość bazy i zamiast polskich znaków mam krzaki.
Jak zachować zgodność kodowania w bazie i w formularzu?
Wcześniej robiłem takie rzeczy z MySQL i nie miałem takich problemów.
Proszę o help


Witam

Ja używam tutaj funkcji iconv
Jeśli wyrzucam na stronę coś z bazy, która jest kodowna w cp1250:
iconv(iconv_get_encoding($str),"ISO-8859-2",$str)
zamiast iconv_get_encoding($str) możesz po prostu wpisać cp1250 - gdy jesteś tego pewien.
Jeśli zapisuje coś do bazy to odwrotnie:
iconv("iso-8859-2,"cp1250",$str).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.