WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Konvertera UTF-8 till ISO-8859-1 med PHP (https://www.wn.se/forum/showthread.php?t=1043742)

cyner 2010-09-13 10:04

Citat:

Ursprungligen postat av marcuslind (Inlägg 20369276)
Enligt mb_detect_encoding() så är olika fält ifrån formuläret olika encoding. De med ÅÄÖ är UTF-8 och de med A-Z är ASCII. Gissar den fel?

mb_detect_encoding() och andra funktioner kan inte ta reda på vilken teckenkodning som faktiskt har använts, den kan bara gissa baserat på de tecken som den ser. Om exempelvis en sträng är tom, hur ska den veta vilken teckenkodning som använts?

Alltså är det bästa att fråga sändaren vilken teckenkodning som används, allt annat riskerar att gå fel, som det gör för dig.

Om du läser på om teckenkodning (exempelvis på min blogg, som jag föreslog), så förstår du att en sträng med a-z både kan tolkas som ASCII, ISO-8859-1, Windows 1252, UTF-8 och andra teckenkodningar. Det spelar ingen roll för dessa tecken, alltså är mb_detect_encoding() helt meningslös i dessa fall.

Och eftersom mb_detect_encoding() i ditt fall säger UTF-8 för vissa fält, kan du utgå från att det är UTF-8 som används och inget annat. Men det kräver förstås att inte källan byter teckenkodning.

Citat:

Ursprungligen postat av marcuslind (Inlägg 20369276)
Det jag vill göra är alltså att få formuläret att även skicka ÅÄÖ i ASCII; precis som du säger så går det med ISO-8859-1(?). Hur får jag formuläret att skicka det så?

(Strunta i ASCII, du vill ju ha ISO-8859-1, och det är inte samma sak. ASCII innehåller inte åäö.)

Konvertera indata från UTF-8 till ISO-8859-1 och skicka. Har du provat det?


Alla tider är GMT +2. Klockan är nu 15:16.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson