webForumDet fria alternativet

UTF-8, vissa ungerska tecken blir fel

PHP

6 svar · 746 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Har byggt ett översättningssystem som använder UTF-8 och det har fungerat jättebra med bl.a. Svenska, Polska och Ryska tecken.

Upptäckte precis ett fel med vissa Ungerska tecken, matar man in en bokstav med dubbla accenter, t.ex. űrlapmezőben, blir det ?rlapmez?.

Alla andra tecken verkar funka, men inte dom som innehåller dubbla accenter.

När databasen öppnas kör jag:

mysql_query("SET NAMES utf8") or die(mysql_error());
mysql_query("SET CHARACTER SET utf8") or die(mysql_error());

När texten sparas:

$cont_text = safesql($_POST['cont_text']);

Safesql:

function safesql($value){
	$value = trim($value);
	if(get_magic_quotes_gpc()){
		$value = stripslashes($value);
	}
	// check if this function exists
	if(function_exists("mysql_real_escape_string")){
		$value = mysql_real_escape_string($value);
	}else{
		// for PHP version < 4.3.0 use addslashes
		$value = addslashes($value);
	}
	return $value;
}

Vad kan tänkas vara fel?
Kollar jag i databasen så finns "?" med, så felet sker när texten sparas.

Medlem sedan mars 2007845 inlägg
#2

Vad har du för teckenuppsättning i sidans header? Är det utf-8 där?

Medlem sedan feb. 20034 441 inlägg
#3

drew skrev:

Vad har du för teckenuppsättning i sidans header? Är det utf-8 där?

Japp, kör UTF-8 rakt igenom. Som sagt, språk som Svenska, Engelska, Polska, Tyska, Ryska, Portugisiska fungerar klockrent, men just tecken med dubbla accentern sparas som "?".

Medlem sedan mars 2007845 inlägg
#4
mysql_query("SET CHARACTER SET utf8") or die(mysql_error());

CHARACTER_SET med ett underline brukar jag använda. Aldrig testat utan.

Testade dubbla accenter på en av mina sidor och där fungerade dom. Jag har iofs satt till utf-8 redan när jag skapade databasen.

Medlem sedan feb. 20034 441 inlägg
#5

drew skrev:

Jag har iofs satt till utf-8 redan när jag skapade databasen.

Jo, det gör jag med.
Men jag ska testa det här, återkommer strax.

Medlem sedan feb. 20034 441 inlägg
#6

drew skrev:

CHARACTER_SET med ett underline brukar jag använda. Aldrig testat utan.

Är du säker?
Testade nu med:

mysql_query("SET CHARACTER_SET utf8") or die(mysql_error());

och får

Unknown system variable 'CHARACTER_SET'
Medlem sedan feb. 20034 441 inlägg
#7

Nu hittade jag felet.... hade råkat skapa databasen med kollationering latin_1, så det var inte så märkligt att det inte funkade.

Konstigt dock att det funkar med hela det Kyrilliska alfabetet hittills?

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)