Gå til innhold

tekstfil i UTF-8, konvertere til "norsk" format


Anbefalte innlegg

Jeg har ikke så mye peiling på tegnsett osv, men jeg har lest litt gjennom tråder her, og har ikke funnet løsningen enda.. :\

 

Jeg laster ned en XML-fil i UTF-8 format. Når jeg åpner filen i blant annet notepad (eller view source direkte fra nettsiden jeg laster ned) så ser jeg at ordet "større" for eks er skrevet som "st& # 2 4 8 ;rre" (la inn mellomrom så ikke nettleser konverterer til ø)

Det er ikke noe problem å ordne dette til websider osv (passe på å fortelle nettleser at koding er UTF-8 da bare), men dette skal leses av en applikasjon som ikke skjønner seg på UTF-8.

 

Det jeg ønsker er en måte å "konvertere" hele tekstfilen til "norsk standard", dvs at alle disse "& # 2 4 8 ;" osv må byttes ut til norske tegn, ikke bare skrive i toppen av kodingen er UTF-8...

 

Er dette lett å få til??

 

Kjører PHP5.

Registered stream filters ("phpinfo()") sier:

convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, zlib.*

 

Har prøvd litt med utf8_decode, iconv osv, men det ser ikke ut til at disse ENDRER på tegnene..

Lenke til kommentar
Videoannonse
Annonse

Først må du definere hvilket tegnsett du skal benytte. iso-8859-1 eller iso-8859-15 er rimelig safe.

 

utf-8 innholder rimelig mange tegn som ikke er definert i disse deffene, så du må bestemme deg for hvordan du skal behandle tegn som ikke støttes.

 

Du burde ta en titt på php manualen på følgende steder

 

Multibyte strings

http://www.php.net/manual/en/ref.mbstring.php

 

decimal refs to chr

http://www.php.net/manual/en/function.mb-d...mericentity.php

funker ikke på hex referanser. Effektiv og rask funksjon.

 

Konvertering av tegnsett

http://www.php.net/manual/en/function.mb-c...rt-encoding.php

 

Du må også se på entiteter.

Lenke til kommentar
...men dette skal leses av en applikasjon som ikke skjønner seg på UTF-8....

...Har prøvd litt med utf8_decode, iconv osv, men det ser ikke ut til at disse ENDRER på tegnene...

Dersom det skal leses av en applikasjon som kke forstår UTF-8, vil den nok ikke forstå noen av dem andre tegnsettene for spesialtegn heller. (derfor ser du ingen endring ved bruk av utf8_decode();) Om det bare er norske tegn (æøå) så er vel da eneste løsningen å konvertere dem til ae oe aa.

Endret av pulse
Lenke til kommentar

Ser ut som jeg rett og slett ender opp med å bruke str_replace for å erstatte de tegnene som må endres. Det ser ut som det for det meste er æøå som er problemet. Samt noen tegn som ikke mozilla eller IE heller forstår seg på (men det passer å bytte dem til ' og "

 

Har nå byttet ut disse + "ø", men filen inneholder for øyeblikket ikke æ og å. Noen som vet "utf-8" koder for æ og å ? Eventuelt en oversikt over alle kjente slike koder.. Ø var som nevnt & # 248 ; i dette formatet (uten mellomrom mellom)

Lenke til kommentar
Ser ut som jeg rett og slett ender opp med å bruke str_replace for å erstatte de tegnene som må endres. Det ser ut som det for det meste er æøå som er problemet. Samt noen tegn som ikke mozilla eller IE heller forstår seg på (men det passer å bytte dem til ' og "

 

Har nå byttet ut disse + "ø", men filen inneholder for øyeblikket ikke æ og å. Noen som vet "utf-8" koder for æ og å ? Eventuelt en oversikt over alle kjente slike koder.. Ø var som nevnt & # 248 ; i dette formatet (uten mellomrom mellom)

 

Som sagt så er det bare å konvertere desimal-referansene med mb_decode_numericentity.

$no_dec_refs=mb_decode_numericentity($input, array(0x0,0xff,0x0,0xff),"UTF-8");

Skal du gjøre dette riktig, må du også konvertere til ditt tegnsett.

$iso_8859_1=mb_convert_encoding($no_dec_refs,"ISO-8859-1","UTF-8");

 

For ordens skyld vil jeg påpeke at det ligger bøtter av forutsetninger til grunn for disse to linjene.

 

Du kan umulig ha søkt etter "utf-8" eller "iso-8859-1" på google eller wikipedia. Det må da være enklere å gjøre dette, enn å poste en forumpost om at du ikke gidder å søke etter dette selv?

 

http://www.google.com/search?q=iso-8859-1

 

http://www.google.com/search?q=utf-8

 

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

 

Du finner unicode deffen her:

http://www.unicode.org/versions/Unicode5.0.0/

Endret av Skagen
Lenke til kommentar

Programmering er forresten litt nytt for meg, så det er ikke så lett å vite hva man skal søke etter heller.

Dessuten så er det tydeligvis vanskelig å søke etter disse "kodene" jeg er ute etter, for nettleseren oversetter tegnene til "rett bokstav" automatisk i det jeg søker.

 

Når det gjelder å konvertere til "mitt tegnsett" så der det ikke ut som at dette faktisk endrer på tegnene i filen, men forteller "programmet" som skal behandle filen videre hvilket tegnsett som er i bruk.. Mulig jeg tar feil men..

Endret av Skagen
Lenke til kommentar
Programmering er forresten litt nytt for meg, så det er ikke så lett å vite hva man skal søke etter heller.

Dessuten så er det tydeligvis vanskelig å søke etter disse "kodene" jeg er ute etter, for nettleseren oversetter tegnene til "rett bokstav" automatisk i det jeg søker.

 

Når det gjelder å konvertere til "mitt tegnsett" så der det ikke ut som at dette faktisk endrer på tegnene i filen, men forteller "programmet" som skal behandle filen videre hvilket tegnsett som er i bruk.. Mulig jeg tar feil men..

 

Jeg har referert til funksjonene det er meningen at du skal bruke. Har du forsøkt disse?

 

Jeg har også referert til php manualen, og til seksjonen om multibyte strings. Har du fulgt instruksjonene?

 

Jeg har referert til hvordan du konverterer mellom tegnsett. Har du lest dokumentasjonen? I denne dokumentasjonen står det ettertrykkelig at input skal være en string, og at funksjonen returnerer en string. Den beskriver også hva som er endret i stringen. Hvorfor babler du da om endring av en fil?

 

Jeg har gitt deg hint om å benytte iso-8859-1 eller iso-8859-15, men ingenting tyder på at du har forsøkt å lese deg opp om disse definisjonene. Det rimer ikke med spørsmålene du stiller. Forstår du forskjellene mellom disse, og mellom disse og utf-8?

 

Du har ikke engang giddet å opplyse oss om hvilket tegnsett du benytter.

 

Mulig du opplever at du leter etter løsninger, men jeg ser ingen spor til at du leter de stedene jeg har informert deg om. Men jeg ser hauger av ting som tyder på at du ikke har giddet å følge lenkene og lest det som står der.

 

Du har fått en ekstremt kraftig løsning i fanget, har du forsøkt denne? Hvorfor gir du ikke tilbakemeldinger på det?

 

Tar du tegninga?

 

Du har fått ekstremt god hjelp i denne tråden, så god at det ikke er noen grunn til at ting ikke skal fungere nå. Har du fremdeles problemer?

Endret av Skagen
Lenke til kommentar
Jeg har referert til funksjonene det er meningen at du skal bruke. Har du forsøkt disse?

 

Jeg har også referert til php manualen, og til seksjonen om multibyte strings. Har du fulgt instruksjonene?

 

Jeg har referert til hvordan du konverterer mellom tegnsett. Har du lest dokumentasjonen? I denne dokumentasjonen står det ettertrykkelig at input skal være en string, og at funksjonen returnerer en string. Den beskriver også hva som er endret i stringen. Hvorfor babler du da om endring av en fil?

 

Jeg har gitt deg hint om å benytte iso-8859-1 eller iso-8859-15, men ingenting tyder på at du har forsøkt å lese deg opp om disse definisjonene. Det rimer ikke med spørsmålene du stiller. Forstår du forskjellene mellom disse, og mellom disse og utf-8?

 

Jeg har prøvd mb_convert, utf8_decode, iconv osv, men det er godt mulig at der en noe feil med php-oppsettet som gjør at det ikke fungerer som jeg ønsker. Har prøvd å definere for eks UTF-8 som standard tegnsett både inn og ut både "her og der". Når jeg kjører echo av string etter "decoding" så er stringen lik den som ble matet inn.

 

Du har ikke engang giddet å opplyse oss om hvilket tegnsett du benytter.

 

Mulig du opplever at du leter etter løsninger, men jeg ser ingen spor til at du leter de stedene jeg har informert deg om. Men jeg ser hauger av ting som tyder på at du ikke har giddet å følge lenkene og lest det som står der.

 

Jeg HAR faktisk lest i de trådene du har gitt meg. Likevel fant jeg ikke ut hva jeg gjør feil som gjør at teksten ikke blir "konvertert" riktig.

 

Du har fått en ekstremt kraftig løsning i fanget, har du forsøkt denne? Hvorfor gir du ikke tilbakemeldinger på det?

 

Tar du tegninga?

 

Du har fått ekstremt god hjelp i denne tråden, så god at det ikke er noen grunn til at ting ikke skal fungere nå. Har du fremdeles problemer?

 

Ikke missforstå! Jeg syns ikke jeg har fått dårlig hjelp i denne tråden (har jeg gitt inntrykk av det?). Men jeg ble litt frustrert over at min "quick fix" med str_replace plutselig skulle være så håpløs, samt at jeg ble beskyldt for å være både lat og håpløs uten at du vet noe særlig om det (antagelse).

 

Takk for hjelpen uansett. Takk for at du tok deg tid til å svare på disse "håpløse" problemstillingene mine. Kanskje du skulle vise en litt mer vennlig holdning når du svarer neste gang..

 

By the way. Jeg kjørte str_replace på "kodene" for æ, ø og å samt noen andre spesialtegn, og dette fungerer utmerket.

 

Da legger jeg denne diskusjonen død.

Lenke til kommentar
http://www.joelonsoftware.com/articles/Unicode.html

 

Det er noe alle utviklere bør ha lest og forstått!

 

Har lest den der ja. God den. Har nå tatt litt tekst inn og ut av databaser ovs og passet på at tegnsett har vært korrekt. Men ingen andre tilfeller har jeg hatt så rare "koder" for æøå osv som i min problemstilling i starten av tråden. Men nå har jeg fått til en løsning som fungerer bra, så den får være som den er.

 

I de "andre" tilfellene som har "feilene" bare vært at ø for eks vises som Ã¥ osv, og i disse tilfellene har jeg fått til å bruke funksjonene som er tipset om lengre oppi tråden. Dette er rett og slett en problemstilling jeg ikke har vært noe særlig borti før, men jeg ser at dette er et område jeg må ha kontroll på fremover (ikke fordi dett har forandret seg i det siste, men fordi jeg jobber med "andre ting" enn før)

 

Takk for alle svar

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...