Šta je novo?

Latinica, SQL i ASP

craba

Slavan
Učlanjen(a)
03.08.2005
Poruke
145
Poena
330
Moja oprema  
CPU & Cooler
AMD Ryzen 7 5800X3D, Arctic Freezer 34 eSports DUO Red
Matična ploča
ASUS Prime B450M-A
RAM
Kingston DDR4-3200 16GB (2x8)
GPU
PowerColor AMD Radeon RX 6900 XT Red Devil
Storage
SSD Kingston 480GB, SATA III, A400
Zvuk
Logitech 2.1
PSU
EVGA Supernova 1600 G+, 80+ Gold 1600W, Fully Modular
Kućište
Fractal Design Define Mini C
Monitor
Samsung 27" IPS Full HD Led 75Hz
Miš & tastatura
A4Tech X7 XL-747H Laser mouse & Redragon K579 Mechanical keyboard
Pravim jednu web aplikaciju, kojom treba da omogućim korisnicima, koji se ne razumeju u web programiranje, jednostavan način da ažuriraju tekst na naslovnoj stranici svog web sajta. Dakle, kompletno rešenje postoji, u smislu web sajta, ja bih trebao da napravim nešto poput CMS-a, ali daleko jednostavnije.

Stvar je sledeća: web sajt je pisan u HTML-u, ASP-u, i koristi SQL Server 2005., ali na stranicama, koje klijent želi da ažurira, postoje tekstovi, koji, prirodno, sadrže latinična slova.

Zamislio sam proces ažuriranja teksta, tako što će se lice (administrator), logovati na sajt, time će mu biti dostupna alatka, preko koje će ažurirati sadržaj. Kada tu alatku pokrene, u stvari će mu se otvoriti jedan ekran pretraživača dimenzija npr. 600x700, na kojem bi postojao textarea, u koji bi administrator upisivao tekst, koji treba da zameni tekst na npr. naslovnoj strani. Kada završi sa unosom teksta u textarea, klinuo bi na dugme "ažuriraj" i time bi se taj tekst upisao u bazu, zakačenu na SQL Server 2005.

Textarea bi imao vrednost atributa name="tekst", klikom na dugme "ažuriraj" bi se aktivirao ASP skrip, koji bi izvršio povezivanje za bazom na SQL Serveru, i u određenu tabelu, u određenu kolonu bi vršio upis teksta, iz textarea, sa prethodne strane, koji mu je prosleđen.

Tu nastaje problem. Ukoliko u tom ASP skriptu definišem promenljivu Session("tekst"), koja traži vrednost textarea sa prethodne strane "'"+request("tekst")+"'", a zatim izvršim insert u tabelu, takava Session, ne može da zapampti latinična slova, kao što su čć, umesto njih upisuje cc. Ukoliko zaobiđem Session promenljivu, pa direktno u insert delu SQL izraza koristim "'"+request("tekst")+"'", opet isti problem. Nema latiničnih slova!
Tip podatka u tabeli, u koju se vrši upisivanje je nchar. Negde sam pročitao da, da bi se upisala latinična slova, potrebno je da SQL izraz izgleda npr. insert tabela (rb, ime, prezime) values (1, N'Dražen', N'Kovačćšđćč'), onda će u tabelu zaista i biti upisane vrednosto za ime i prezime, kao što je navedeno u values delu izraza, s tim da i tip podataka za polja u koje se unose ovakve vrednosti, mora biti nchar ili nvchar!

Kako da to rešenje primenim na Session promenljive ili "'"+request("tekst")+"'", ili postoji neko treće rešenje?

Hvala svima koji su u mogućnosti da pomognu, nadam se da sam u objašnjenju problema bio jasan.:wave:
 
Ja se bavim access control sistemima i koristim softver koji podatke čuva u SQL bazi. Problem sa latiničnim slovima se javlja jer ti je default database collation verovatno postavljen na engleski codepage pa ne prima latinicna slova. Problem je moguće rešiti tako što pre instalacije SQL Server postaviš u Windows-u sve regional settings-e (i default i location i number-date formats) na Serbian (latin) ili Slovenian, pa će SQL prilikom instalacije sam postaviti da svaka nova baza podataka ima collation koji odgovara CP1250. Ja sam problem tako rešio u SQL2000, a mislim da možda u novijim verzijama možeš i prilikom kreiranja baze da zadaš collation settings
 
Koji ti je HTML encoding stranice na kojoj ti se nalazi textarea i koji ti je encoding SQL tabele?
 
HTML enkoding je: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250";
charset="windows-1250">, za SQL nisam siguran. Trenutno nemam pristup toj bazi, ali pokušaću da uradim kao što je napisao Jera. Mada, čini mi se da je instalacija XP-a, po defaultu bila instalirana sa lokalnim podešavanjima na Serbian, Latin, ili šta već, tj. na lokaciju Serbia and Montenegro.

Probao sam i UTF-8 enkoding na stranici gde mi je textarea, ali rezultat je isti.
 
Zar SQL Server može da se instalira na XP-u? Ja sam bio ubeđen da ne može.
Svakako idi u SQL Server manager i u properties baze pogledaj koji joj je collation, ako nije 1250 onda je to razlog zašto nemaš naša slova pa proguglaj kako da napraviš novu bazu sa željenim collation-om.
 
Moze... a collation moze i da se promeni... pravi za ovu primenu je onaj koji sadrzi 1250 u nazivu...
 
Zaboravio si N ispred stringa, ovo "'"+request("tekst")+"'" treba da bude "N'"+request("tekst")+"'".


BTW. Za sve koji su napisali da je problem sa collation, zar nije collation samo grupa pravila po kojima ce se raditi poredjenje i sortiranje?
 
Poslednja izmena:
@IgorHW to je rešenje!
U tome je bio problem sve vreme.
Dakle, da sumiram kako je na kraju sve proradilo kako treba:
Postavio sam collation za bazu u SQL Serveru 2005 na SQL_Latin1_General_CP1250_CI_AS, za svaki slučaj, HTML enkoding je ostao isti: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"; charset="windows-1250">, i najbitnije za tip podatka u tabeli, u koju želim da upisujem latinična slova, treba postaviti nchar.
Na kraju sam uradio kako mi je rekao IgorHW, tj. napisao sam "N'"+request("tekst")+"'" i sve je proradilo savršeno.

Hvala svima koji su pokušali da pomognu i koji su na kraju zaista i pomogli! Hvala vam!
 
Collation i treba da postavis na taj ali ne iz razloga da ti prihvata nasa slova vec cisto da bi imao pravilno sortiranje, n tipovi podataka oznacavaju unicode a unicode po defaultu prihvata vecinu jezika na svetu ukljucujuci nas.
 
Nazad
Vrh Dno