FAQ |
Kalender |
![]() |
#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 |
||
![]() |
![]() |
![]() |
#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.
|
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
OK, tack!
Är "" ett tecken eller tre? Hur kan man ta bort dessa tecken i PHP?? /Andreas |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Citat:
|
||
![]() |
![]() |
![]() |
#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 |
|
|