Gå till innehåll
Just nu i M3-nätverket

Läsa ASCII-fil i PHP


Peffo

Rekommendera Poster

Hej alla

 

Försöker ordna mig en liten webbutik - utan att behöva sätta mig in i MySQL.

Tänkte hålla produktregister i Appleworks - exportera som ASCII och använda PHP för att läsa exporten.

Allt funkar fint utom åäö som försvinner (ASCIIext).

Har provat div "färdiga" PHP-funktioner utan att lyckas.

 

Tips någon?

 

Peter

Länk till kommentar
Dela på andra webbplatser

Standard (7 bitars) ASCII innehåller bara engelska bokstäver, troligen så bör du exportera filen i latin-1 (ISO 8859-1) eller i något unicode format tex UTF-8, UTF-16 ... - vad du bör använda beror på din butik.

Länk till kommentar
Dela på andra webbplatser

Ok - tack

 

Lite som inte stämmer.

Öppnar jag exporterad fil i exv. textredigeraren finns åäö med på rätt sätt. Så ASCII exporten verkar inte utesluta något.

Mitt problem blir vad jag ber php söka efter för att ersätta med å etc.

Fn läser jag ut data ur filen med separatorer \t och \x0b - tab och vertical tab, men hittar inte motsvarande koder för åäö.

 

Peter

Länk till kommentar
Dela på andra webbplatser

Ok - tack

 

Lite som inte stämmer.

Öppnar jag exporterad fil i exv. textredigeraren finns åäö med på rätt sätt. Så ASCII exporten verkar inte utesluta något.

Mitt problem blir vad jag ber php söka efter för att ersätta med å etc.

Fn läser jag ut data ur filen med separatorer \t och \x0b - tab och vertical tab, men hittar inte motsvarande koder för åäö.

 

Peter

378894[/snapback]

 

Vad är det för teckenformat på filerna som du matar in till php - kan det vara Mac-Roman ? Om så, kolla då på http://en.wikipedia.org/wiki/Mac-Roman_encoding för att se vilka numeriska koder som gäller för å/ä/ö/Å/Ä/Ö.

 

Du kan använda terminal kommandot 'file' för att få en god gissning vad du har för format på en viss fil - vissa format är så lika att det kan vara svårt för 'file' att veta vilket som användes när filen sparades - en textfil med engelsk text är tex en giltig 7 bitars ASCII fil, latin-1 fil eller Mac-Roman fil.

 

Det finns en uppsjö av olika 8 bitars teckenkodningssystem (med max 256 tecken per kodtabell), som har många gemensamma och egna bokstäver, där varje bokstav motsvara en kodtabells position - position 0-255. Dessa teckensystem kan i varierande grad konverteras till varandra eftersom många bokstäver finns i flera av dessa system (ASCII, latin-1, mac-roman ...).

 

Om du vet vilket format du matar in (mac-roman ?) i php och vad php skickar ut på websidorna (latin-1 ?), så skulle du alternativt kunna göra en enkel tecken konverterare tex:

 

ä (mac-roman) -> ä (latin) => 8A -> E4

....

 

i stället för att använda ä -> &auml

 

Not: 8A är ett bas 16 tal - motsvara position 138 i vanlig 10 tals bas

Not: E4 är ett bas 16 tal - motsvara position 228 i vanlig 10 tals bas

Not: 'man ascii' visar ASCII tabell positionerna i bas 8, 10 och 16 och vilka bokstäver som finns på vilka positioner

 

 

Du kan också mat in en fil med bara åäöÅÄÖ och se vilka numeriska teckenkoder som php ser, sedan är det bara att konvertera dessa koder till det format som du behöver.

 

 

 

ps: jag har inte jobbat med php så jag kan inte ge några php specifika tips, om hur teckenkonvertering hanteras bäst i php, men tipsen ovan borde fungera - problemt är (mestadels) det samma oberoende programmeringsspråket.

Länk till kommentar
Dela på andra webbplatser

Tänkte hålla produktregister i Appleworks - exportera som ASCII och använda PHP för att läsa exporten.

Allt funkar fint utom åäö som försvinner (ASCIIext).

Har provat div "färdiga" PHP-funktioner utan att lyckas.

378377[/snapback]

Som flera säger, var noga att kolla vilket teckenuppsätning du använder. PHP gillar inte UTF 8/16/32 nått vidare. Sen, vart skall du med datat sedan? Skall det publiceras som webbsida? I så fall, vilken encoding säger du att denna webbsida har? Du måste ha samma encoding definierat som den encoding ditt data faktiskt är i.

 

// Totte

Länk till kommentar
Dela på andra webbplatser

Tack alla.

 

Har inte haft tid på sistone att ta det hela vidare.

Återkommer kanske...

 

Peter

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...