Šta je novo?

MSSQL 2005 Express i UTF-8

Nick

Čuven
Učlanjen(a)
17.07.2002
Poruke
378
Poena
619
Do sada sam radio sa MSSQL 2000, ali samo projekte za tržište USA.
Takođe, radio sam i web aplikacije za naše područje u kombinaciji sa MySQL gde sam koristio UTF-8.

Pitanje: Kako podesiti UTF-8 pri radu sa MSSQL 2005? Potrebno je da imam u istoj tabeli podatke na srpskom, mađarskom, engleskom....

Pokušao sam da stavim da mi polja budu nvarchar i to funkcioniše kada unesem podatke u samom MSSQL. Ali kada to isto radim preko ASPX strane đ postane d, ćč se ne vide, a ćirilična slova su ????

Snimio sam i stranicu preko SaveAs da bude Unicode.

U bazi sam gledao koji sve postoje Collation, ali ne postoji UTF-8.

Tražio na netu, ali opet ništa korisno nisam našao. Postoje rešenja za jedan jezik, ali meni treba više jezika. Da li je to izvodljivo?
 
Poslednja izmena:
Kod MySQL-a se to resava tako sto se pre svakog query-ja doda ovo:
"SET NAMES utf8"
pretpostavljam da ima nesto slicno kod MSSQL-a :S:
 
Poslednja izmena:
Da citiram SQL Management Studio

'names' is not a recognized SET option.

Znam za SET NAMES i to radi na MySQL, ali ne i na MSSQL.
 
Hvala Filo, ali to je Google već iskopao. Nadam se da ne treba da radim tako nešto.
Mislio sam da je neko radio ASP.NET 2.0 aplikaciju, pa ima iskustva.

Probaću još da pronađem neko rešenje, pa ako izbunarim - javljam. Možda nekome zatreba.

Poz.

p.s. Ovde mi izgleda kao problem sa native podrškom za SQL klijenta u VS2005EE, mada bi to bilo čudno. Sličan problem jesam imao sa PHP i MySQL, ali SET NAMES je odradio posao. Pokušaću da pronađem nešto slično, jer problem nastaje na relaciji baza-aplikacija. Tu se dešava gubitak informacija. Bah!
 
Poslednja izmena:
Kad sam koristio PHP i MSSQL 2000 imao sam taj problem i rešio ga tako što sam iz PHPa slao unicode entities umesto običnih karaktera. Znači svaki string koji se šalje bazi se propusti kroz ovu funkciju.
U bazi su polja naravno deklarisana kao nvarchar.
Kod:
function utf8_to_entities($str){
	$unicode = array();        
	$values = array();
	$lookingFor = 1;
        
	for ($i = 0; $i < strlen($str); $i++) {
		$thisValue = ord($str[$i]);
		if ($thisValue < 128)
			$unicode[] = $thisValue;
		else {
			if (count($values) == 0)
				$lookingFor = ($thisValue < 224) ? 2 : 3;
	               	$values[] = $thisValue;
			if (count($values) == $lookingFor) {
				$number = ($lookingFor == 3) ?
				(($values[0]%16)*4096)+(($values[1]%64)*64)+($values[2]%64):
				(($values[0]%32)*64)+($values[1]%64);

				$unicode[] = $number;
				$values = array();
				$lookingFor = 1;
			}
		}
	}
		
	$entities = '';
	foreach( $unicode as $value ) $entities .= $value. '#';
	return $entities;
}
 
Problem rešen!

Postavio sam polja u tabeli da budu tipa nvarchar kako bih imao Unicode podršku, ali sam potpuno zaboravio (radio po inerciji) da u stored procedure za tip parametra stavim takođe da je nvarchar već sam stavio varchar.
Naravno, kada bih poslao unicode tekst stored proceduri ona bi ga prihvatila kao nonUnicode i tako sam ostajao bez naših (a i nekih drugih specifičnih) karaktera.

Biser! :d

Nadam se da će ovo nekome pomoći.

Pozdrav.
 
Ajd da ne otvaram novi tread

Da li moze isto za iscitavanje iz baze u PHP?
Baza ima collation Croatian_CI_AS a SQL Server 2000 je na standardnnom collationu ,
onaj Latian..
Kada PHP povuche podatke iz baze nema nashin sem Š i Ž valjda
Probao sam da menjam kodnu stranu ali ništa

Umesto ć ima ono ae pa kad ga iznese PHP ispadne samo a :D i slichne kuke i motike za ostala slova koja ne prikazuje kako treba.
 
Nazad
Vrh Dno