| FAQ |
| Kalender |
|
|
#1 | |||
|
||||
|
Nykomling
|
Jag jobbar på nästa version och jobbar på ett av de största problemen med den nuvarande versionen.
Webbplatsen ska använda UTF-8 och bygger till stor del på en sökruta. Det är viktigt att webbplatsen klarar av att hantera dessa två typer av sökningar: Det översta alternativet har jag lyckats med så det jag behöver är en funktion som avkodar urler korrekt. header(), meta-taggen samt mitt program (Notepad++) är inställt på UTF-8. Tacksam för all hjälp! Carl-Fredrik Herö, vemringde.se |
|||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Flitig postare
|
|||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Nykomling
|
De funktionerna är tyvärr oanvändarbara med UTF-8. De förutsätter ISO-8859-1 och ger väldigt konstiga resultat med UTF-8.
Har dessutom försökt att först konvertera till ISO-8859-1 för att sen köra urldecode-funktionen, det funkar inte heller tyvärr. |
|||
|
|
Svara med citat
|
|
|
#4 | ||
|
|||
|
Flitig postare
|
Testa följande:
* Spara filen som UTF-8 (Utan BOM) * Sätt header, om du inte gjort det. header("Content-type: text/html; charset=utf-8"); Testa sedan url_decode. Funkar det ändå inte, pröva då denna funktion (hittade på php.net): Citat:
|
||
|
|
Svara med citat
|
|
|
#5 | |||
|
||||
|
Nykomling
|
Filen är sen tidigare satt UTF-8 (testade även utan BOM)
header är satt till UTF-8 och även <meta>-taggen Testade ditt script men allt jag får är sm�r. Bifogar min testfil, den som vill får gärna testa och göra förändringar (ändra filändelsen till .php). |
|||
|
|
Svara med citat
|
|
|
#6 | ||
|
|||
|
Flitig postare
|
Testade exakt den kod du postade här ovan på min server och det fungerar som det ska, har ingen aning om vad som felar för dig då faktiskt.
|
||
|
|
Svara med citat
|
|
|
#7 | ||
|
|||
|
Medlem
|
Citat:
Kod:
$q = mb_convert_encoding($q, 'utf-8','iso-8859-1'); |
||
|
|
Svara med citat
|
|
|
#8 | |||
|
||||
|
Nykomling
|
Tack WoxAnYv! Det är helt klart mb_convert_encoding som fixade biffen.
Men, som du också säger så funkar den inte om söksträngen redan är UTF-8. Sökningen http://vemringde.se/?q=smör blir då fel istället. Finns det någon funktion som kan identifiera en söksträngs Charset? |
|||
|
|
Svara med citat
|
|
|
#9 | |||
|
||||
|
Nykomling
|
Nu har jag skrivit en egen funktion som letar efter åäö plus lite andra liknande tecken. Det verkar som om det fungerar men jag undrar om jag har glömt något tecken?
Testa gärna scriptet och tala om vad ni tycker! |
|||
|
|
Svara med citat
|
|
|
#10 | |||
|
||||
|
Mycket flitig postare
|
Jag har haft likande problem förut, denna kod löser ditt problem på ett bättre sätt:
Kod:
<?php
header("Content-type: text/html; charset=utf-8");
function is_utf8($string)
{
* /* From http://w3.org/International/questions/qa-f...orms-utf-8.html */
return preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$%xs', $string);
}
$q = urldecode($_GET['q']);
if (!is_utf8($q)) $q = utf8_encode($q);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang="sv" lang="sv">
<head>
*<title>UTF-8 url decode test</title>
*<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
echo "Q = $q<br>";
?>
<form method="GET" ><input name="q" value=""><input type="submit"></form>
</body>
</html>
|
|||
|
|
Svara med citat
|
| Svara |
|
|