ö blir inte ö utan ö - bra lösning mottages...

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
beelzebubs



Medlem i: 3270 dagar

Status: Offline



#667360
Inlägg Skrivet: 2009-12-30 16:29      Ämne: ö blir inte ö utan ö - bra lösning mottages... Citera

Hur kommer jag runt problemet med att php filen och xml filen inte talar samma språk?
xml.en använder utf-8 och php använder ISO och om jag har förstått det hela rätt är det en konflikt där imellan.
Slänger upp ett par länkar till dokumenten så att ni ser vad det är jag menar.

Och om jag sätter php till utf-8 så löser bara bara ett problem men skapar nya, jag får massa � istället för åäö.
Det som tidigare var ö blir nu rätt, fast den text som jag översätter med hjälp av språkfilen blir nu fel �. - Se bifogad bild!
Och sparar jag 2yr_xml.php filen i utf-8 format så fungerar det inte alls och fråga inte varför..
Jag har gjort om filerna till textfiler så att man kan se hur php o xml filerna ser ut.
Huvudfilen finns här:
http://beelzebubs.webbland.se/yr_no/2yr_xml.txt - Normal php
Språkfilen finns här:
http://beelzebubs.webbland.se/yr_no/yr_lang.txt - Normal php
Xml:en finns här:
http://beelzebubs.webbland.se/yr_no/cache/xml.txt - heter normalt sett Yttersöra.xml (m.a.o det ortsnamn som är valt.)

Detta är de filerna som används förutom stil mallen, men den påverkar ju inte detta.


Är ganska novis på detta så om det är någon som har en ide eller vet något sätt man kan komma runt det på så är jag tacksam för alla förslag.


OBS! JAG HAR ANVÄNT SÖKFUNKTIONEN!

Har även googlat utan nämnvärt resultat.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 5182 dagar
Från: Sveriges framsida
Status: Offline



#667364
Inlägg Skrivet: 2009-12-30 17:07      Ämne: Citera

Det finns tre delar som påverkas av dessa teckenkodningar:_

Dina PHP-skript
De XML-filer du läser in
Den HTML du skriver ut från PHP-skripten

Vad jag förstår har dina PHP-skript Latin1 och XML-filerna UTF-8.

Förslag 1: (Rekommenderas starkt!)
Konvertera dina PHP-dokument till UTF-8 och sätt din HTML till att använda UTF-8 med <meta http-equiv="content-type" content="text/html; charset=utf-8" />

Förslag 2:
Använd utf8_decode på allt som kommer från XML-dokumenten. Då blir det ISO8859-1(Latin1).
Glöm inte att sätta din HTML till att använda samma.
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Förslag 3 (motsatsen till 2):
Låt dina PHP-filer vara ISO, och XML:erna i UTF-8.
All data som skall skrivas ut till din HTML som inte kommer från xml-dokumenten kör du utf8_encode på. Glöm inte att sätta din HTML till UTF-8 också.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

OBS! Du bör sträva efter att använda förslag 1. Om det är något som inte fungerar, se till så filerna sparas som UTF8 utan BOM. Om de sparas med BOM får du antingen felmeddelande eller en blank sida.
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
hallis



Medlem i: 5722 dagar
Från: Stockholm
Status: Offline



#667369
Inlägg Skrivet: 2009-12-30 17:55      Ämne: Citera

Om du söker på "teckenkodning" får du upp ganska många som frågat EXAKT det du frågar nu.

http://phpportalen.net/viewtopic.php?p=627730#627730
http://phpportalen.net/viewtopic.php?t=101246
http://phpportalen.net/viewtopic.php?t=107223
 

_________________
Utvecklingsbloggen
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
beelzebubs



Medlem i: 3270 dagar

Status: Offline



#667374
Inlägg Skrivet: 2009-12-30 18:48      Ämne: Citera

marabou skrev:
Det finns tre delar som påverkas av dessa teckenkodningar:_

Dina PHP-skript
De XML-filer du läser in
Den HTML du skriver ut från PHP-skripten

Vad jag förstår har dina PHP-skript Latin1 och XML-filerna UTF-8.

Förslag 1: (Rekommenderas starkt!)
Konvertera dina PHP-dokument till UTF-8 och sätt din HTML till att använda UTF-8 med <meta http-equiv="content-type" content="text/html; charset=utf-8" />

Förslag 2:
Använd utf8_decode på allt som kommer från XML-dokumenten. Då blir det ISO8859-1(Latin1).
Glöm inte att sätta din HTML till att använda samma.
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Förslag 3 (motsatsen till 2):
Låt dina PHP-filer vara ISO, och XML:erna i UTF-8.
All data som skall skrivas ut till din HTML som inte kommer från xml-dokumenten kör du utf8_encode på. Glöm inte att sätta din HTML till UTF-8 också.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

OBS! Du bör sträva efter att använda förslag 1. Om det är något som inte fungerar, se till så filerna sparas som UTF8 utan BOM. Om de sparas med BOM får du antingen felmeddelande eller en blank sida.

Förlag 1 fungerar inte alls.
Jag la till följande sträng
KOD:
1:
header('Content-Type: text/html; charset=utf-8');
längst upp i huvudfilen ändrade även till utf-8 i html:en men om jag sparar filen som utf-8 så fungerar den inte.
ex. på utf-8 http://beelzebubs.webbland.se/yr_no/3yr_xml.php

Förslag 2 & 3 skulle jag behöva ett exempel på för att förstå.
Har försökt med lite olika förslag som jag hittat men inget verkar rätt.

Kan även förtydliga en sak: xml filens innehåll kan jag inte direkt påverka den laddas ju ner direkt i från http://www.yr.no/
Men detta kanske ni redan hade listat ut Wink
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 5182 dagar
Från: Sveriges framsida
Status: Offline



#667389
Inlägg Skrivet: 2009-12-30 22:47      Ämne: Citera

Att det visar fel på sidan beror på att alla inblandade filer inte är UTF-8. Några är fortfarande ISO-8859-1.
Skulle gissa på dina språkfiler
Citat:
Väderprognos
Nästa uppdatering
Tillhandahålls av

Den fil där dessa texter finns måste också göras om till UTF-8.

Alla filer som anropas måste göras om.

Är filen UTF-8 nu, eller vad är det som inte funkar när du sparar som UTF-8

Förresten vilken text-editor använder du?
Alla texteditorer kan inte spara i UTF8 utan BOM.
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
beelzebubs



Medlem i: 3270 dagar

Status: Offline



#667402
Inlägg Skrivet: 2009-12-31 01:32      Ämne: Citera

Jag använder vanlig gammal hederlig notepad.
Och där finns inget bom.

Funkar det med den eller har du/ni nått förslag på något som är bättre.
Det bör ju då också helst vara någon form av freeware.

Antar att jag får fortsätta gräva i detta, för just nu verkar det som norrmännen på YR har större problem än jag, för det kommer ingen data där ifrån.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 5182 dagar
Från: Sveriges framsida
Status: Offline



#667434
Inlägg Skrivet: 2009-12-31 13:49      Ämne: Citera

Vanlig hederlig notepad sparar utf8 med BOM vad jag vet.
Finns många trevliga editorer som klarar att spara utan.

Själv använder jag Notepad++ (http://notepad-plus.sourceforge.net/) på min Windows-maskin och Smultron på macen.
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
beelzebubs



Medlem i: 3270 dagar

Status: Offline



#667444
Inlägg Skrivet: 2009-12-31 14:35      Ämne: Citera

Tack för tipset, har laddat ner notpad++ det verkar på ytan vara ett riktigt smidigt program.
Skall labba lite med filerna och se vad som händer.

Åter kommer.........
###############
Nu så har jag sparat filerna i utf-8 utan Bom, fast då fungerar det inte alls.
Och anledningen till detta är verkar vara att felet flyttar sig till xml.filen om jag väljer ex.Yttersöra så skall filen med namnet Yttersöra.xml laddas ner i från yr.no om den inte finns och är aktuell i cache mappen fast nu försöker den istället hämta filen med namnet Yttersöra.xml.

Varför i hela fridens namn blir det på detta viset, om jag kollar html koden vi webbläsaren så ser finns åäö med inga konstiga tecken alltså.

Jag har öppnat filen 3yr_xml.php som ligger på server och även den är helt OK.

Så jag fattar helt enkelt inte varför den ropar efter en filen med felaktiga tecken.

Jag vet inte vad ni tror men det känns som att förslag 1 är utrett och klart, eller någon som har någon annan ide.


marabou skrev:
Det finns tre delar som påverkas av dessa teckenkodningar:_

Dina PHP-skript
De XML-filer du läser in
Den HTML du skriver ut från PHP-skripten

Vad jag förstår har dina PHP-skript Latin1 och XML-filerna UTF-8.

Förslag 1: (Rekommenderas starkt!)
Konvertera dina PHP-dokument till UTF-8 och sätt din HTML till att använda UTF-8 med <meta http-equiv="content-type" content="text/html; charset=utf-8" />

Förslag 2:
Använd utf8_decode på allt som kommer från XML-dokumenten. Då blir det ISO8859-1(Latin1).
Glöm inte att sätta din HTML till att använda samma.
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Förslag 3 (motsatsen till 2):
Låt dina PHP-filer vara ISO, och XML:erna i UTF-8.
All data som skall skrivas ut till din HTML som inte kommer från xml-dokumenten kör du utf8_encode på. Glöm inte att sätta din HTML till UTF-8 också.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

OBS! Du bör sträva efter att använda förslag 1. Om det är något som inte fungerar, se till så filerna sparas som UTF8 utan BOM. Om de sparas med BOM får du antingen felmeddelande eller en blank sida.


Detta med utf8_decode & utf8_encode då, exakt hur ser den taggen ut som jag skall lägga in.

Jag har funderat lite till, huvud problemet ligger ju egentligen i hanteringen av informationen som kommer från xml:en och som innerhåller svenska tecken.

Finns det inget bra sätt att bara översätta informationen som kommer från xml:en till Latin-1 eller rent av bara översätta de svenska bokstäverna som kommer där ifrån?

###############
Får väll passa på att önska alla här på phpportalen ett riktigt gott nytt år Exclamation
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marabou
Administratör



Medlem i: 5182 dagar
Från: Sveriges framsida
Status: Offline



#667637
Inlägg Skrivet: 2010-01-03 16:31      Ämne: Citera

beelzebubs skrev:
Nu så har jag sparat filerna i utf-8 utan Bom, fast då fungerar det inte alls.
Och anledningen till detta är verkar vara att felet flyttar sig till xml.filen om jag väljer ex.Yttersöra så skall filen med namnet Yttersöra.xml laddas ner i från yr.no om den inte finns och är aktuell i cache mappen fast nu försöker den istället hämta filen med namnet Yttersöra.xml.

Varför i hela fridens namn blir det på detta viset, om jag kollar html koden vi webbläsaren så ser finns åäö med inga konstiga tecken alltså.

Bokstaven ö med teckenkodning utf-8 motsvaras av ö i latin-1 (ISO-8859-1). Motsvarande med å och ä.

Jag skrev ett litet exempelskript för att visa tydligare:
http://dev.webbstudio.net/teckenkodningar.php

Generellt skall du ALDRIG använda å, ä och ö i filnamn eller URL-er. Om du ändå behöver det, så skall du bara se till att du använder samma "kodning" på filnamnet varje gång.
För att få namnet att "se bra ut" i din FTP-klient eller utforkaren skall du använda funktionen utf8_decode('Yttersöra.xml'); om du anropar den från ditt UTF-8-kodade php-skript.

beelzebubs skrev:
Jag vet inte vad ni tror men det känns som att förslag 1 är utrett och klart, eller någon som har någon annan ide.

För att "förslag 1" skall fungera måste alla dina filer (.php, .xml osv.) vara sparade med UTF-8.
Filerna du laddar ner från yr.no är UTF-8-kodade, och om du då sparar dem i cache så är det inget problem.



Citat:
Detta med utf8_decode & utf8_encode då, exakt hur ser den taggen ut som jag skall lägga in.

Det är PHP-funktioner och används som jag visade i tidigare länk
$filnamn = utf8_decode('Yttersöra.xml');


Citat:
Jag har funderat lite till, huvud problemet ligger ju egentligen i hanteringen av informationen som kommer från xml:en och som innerhåller svenska tecken.

Finns det inget bra sätt att bara översätta informationen som kommer från xml:en till Latin-1 eller rent av bara översätta de svenska bokstäverna som kommer där ifrån?

Jo, det går. Funktionen heter utf8_decode.
Om du vill använda detta sätt måste ALLA dina filer (php, xml osv.) vara sparade som ISO-8859-1 och att du sedan (så fort du laddat ner från yr.no) kör utf8_decode på hela filen som du laddat ner innan du processar eller sparar den.

För att sammanfatta:
* Spara alla dina filer som UTF-8, radera dina cache-filer så den får ladda ner allt från yr.no igen. Då blir det rätt filnamn och skall inte bli några felmeddelanden.

ELLER
* Spara alla dina filer som UTF-8, koda om alla filnamn med utf8_decode innan du sparar eller hämtar (kan även gälla de URL:er du hämtar från yr.no)

ELLER
* Spara alla dina filer som Latin1, använd utf8_decode på allt du hämtar från yr.no innan du sparar, behandlar eller visar det.
 

_________________
"Never argue with stupid people. They will bring you down to their level and beat you with experience."
- Mark Twain
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Snouser



Medlem i: 4692 dagar

Status: Offline



#667681
Inlägg Skrivet: 2010-01-04 02:45      Ämne: Citera

Hade precis samma problem som TS, löste de genom att konvertera alla mina filer till UTF8, även databasen. Då fungerade allt som de skulle.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic