![]() |
Jag har en text i UTF8 som jag behöver konvertera till ISO-8859-1. Men vissa tecken blir inte konverterade. Exempelvis detta tecken:
“ Det är alltså ett citationstecken. På engelska heter tecknet "left double quotation mark". I utf8 består den av tre bytes: 226 128 156. Man kan nog också skriva tecknet som U+201C http://www.fileformat.info/info/unicode/ch.../201c/index.htm Jag har provat att konvertera tecknet med hjälp av utf8_decode() i PHP, men jag får bara ett frågetecken som resultat. Finns inte tecknet i ISO-8859-1 eller vad? Jag noterar att Webmasternetwork.se, som visas i ISO-8859-1, kan visa mitt tecken ovan. Så det borde ju gå att konvertera? Tacksam för tips om vad jag gör för fel. |
Jag hittade en lösning
Kod:
$badchr = array( |
Det är inte så konstigt alls. Tecknet finns inte definierat i iso-8859-1. Därmed kan du inte konvertera det från utf-8 till iso-8859-1. Det kommer troligen från windows codepage 1522.
En bra förklaring: http://bytes.com/groups/php/2773-smart-quotes-php Finns flera möjliga lösningar på http://www.php.net/utf8_encode |
Det är snarare så att det finns definierat - men inte som skrivbara tecken.
|
Citat:
|
Den bästa lösningen är förstås att genomgående använda utf-8 så slipper man att fel och brister i konvertering och begränsningarna i ISO.
(Sedan är förstås utf-8-stödet i php ganska uselt tyvärr.) |
Citat:
|
Citat:
Bättre vore en default_string_encoding som mb_string har för att slippa mystiska problem. |
I codepage ISO-8859-1 (aka Latin1) finns, som tidigare sagt, icke tecknet “ utan endast ", och därför går det egentligen inte att konvertera.
Varför visas ändå tecknet “ i våra webbläsare? Antagligen är det så att när webbservern skickar datat till klienten, och ser att här kommer det visst ett unicode-tecken så försöker den en fuling och skickar unicode-koden för “-tecknet istället. Detta kan den göra eftersom Unicode är en slags utökning av ISO-8859-1. Inte riktigt "rätt" men resultatet blir foolproof. Mer info: http://en.wikipedia.org/wiki/ISO_8859-1 |
Citat:
PS. Om webbservern på något sätt skulle parsa text den skickar till webbläsaren vore ju risken stor att man skulle få korrupta bilder eller liknande. |
Alla tider är GMT +2. Klockan är nu 04:12. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson