| FAQ | 
| Kalender | 
|  2006-08-19, 21:54 | #1 | ||
| 
 | |||
| Flitig postare | 
			
			Hej När jag skickar utdata från PHP-skript i UTF8 så inleds utdatan alltid med följande tecken: "". Vad kommer dessa tecken ifrån? Måste PHP-scriptet kodas i utf-8? Skall man använda utf8_decode och utf8_encode? Jag har utdata både från MySQL och från andra sidor som mitt script laddar hem och extraherar data ifrån. /Andreas | ||
|   |  Svara med citat | 
|  2006-08-19, 23:26 | #2 | |||
| 
 | ||||
| Mycket flitig postare | 
			
			Det där är BOM (Byte Order Mark) i början av UTF-8 filen. Det går att spara UTF-8 filer utan de, men det är ju din editor som avgör. Sen är det frågan om just din PHP-fil måste vara UTF-8 enkodad bara för att du hanterar UTF-8 data. Det behöver den inte nämnligen.
		 | |||
|   |  Svara med citat | 
|  2006-08-21, 20:31 | #3 | ||
| 
 | |||
| Flitig postare | 
			
			OK, tack! Är "" ett tecken eller tre? Hur kan man ta bort dessa tecken i PHP?? /Andreas | ||
|   |  Svara med citat | 
|  2006-08-21, 21:00 | #4 | ||
| 
 | |||
| Medlem | Citat: 
 | ||
|   |  Svara med citat | 
|  2006-08-21, 22:30 | #5 | |||
| 
 | ||||
| Har WN som tidsfördriv | 
			
			Ett tips är att det finns en extension: multibyte, som klarar av att göra t ex preg_match på åäö om dessa är kodade i utf-8. Har börjat hata det faktum att jag numera programmerar i UTF-8 i editorn, och sparar texter som utf-8 i databasen, vilket ger upphov till diverse problem här och var i de inbyggda funktionerna, när man har åäö i texten. Har något ett bättre förslag på hur följande kod kan skrivas under omständigheterna? (mb_split finns inte installerat) Koden tar ut de ord som förekommer i strängen $phrase, och returnerar dem som array. Kod: $phrase = utf8_decode($phrase); 
 
/**
* Det vore bättre att använda multibyte extension (ej installerad som standard).
* 	mb_internal_encoding('UTF-8');
* mb_regex_encoding('UTF-8');
* //setlocale(LC_ALL, 'sv_SE');
* 	mb_split(...);
*/
$words = preg_split('/[^a-z0-9\-?????????????]+/', strtolower($phrase), -1, PREG_SPLIT_NO_EMPTY); 
 
// Vi vill ha tillbaka allt i utf-8 igen
foreach ($words as $i => $word) {
	$words[$i] = utf8_encode($word);
}Där alla ???? står har jag skrivit in specialtecken såsom åäöáà, etc. Pga att php-filen sparas som utf-8 blev dock detta fel, eftersom preg_split vill ha tecken i iso-8859-1. Mycket fult... Istället öppnade jag alltså filen som iso-8859-1 och skrev in dessa tecken, och sparade filen. Nu ser det ju rätt fult ut... Kanske vore det bättre att skriva in dem som utf-8 och sedan köra en utf8_decode på tecknen... hm... nåja... synpunkter på det hela? | |||
|   |  Svara med citat | 
| Svara | 
| 
 | 
 |