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 |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
|||
![]() |
![]() |
![]() |
#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. |
|||
![]() |
![]() |
![]() |
#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:
|
||
![]() |
![]() |
![]() |
#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). |
|||
![]() |
![]() |
![]() |
#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.
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Citat:
Kod:
$q = mb_convert_encoding($q, 'utf-8','iso-8859-1'); |
||
![]() |
![]() |
![]() |
#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? |
|||
![]() |
![]() |
![]() |
#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! |
|||
![]() |
![]() |
![]() |
#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 |
|
|