27. december 2005 - 09:20Der er
13 kommentarer og 1 løsning
UTF-8 filer sendt som ASCII eller binary?
Jeg har et dokument hvori indgår tegn fra Latin Extended Additional. Jeg har derfor angivet encoding som UTF-8 og gemt dokumentet som sådan. Tilsvarende med den til dokumnetet hørende xsd og xsl. Når jeg uploader det via WS_FTP LE kan jeg vælge at sende som ASCII eller som binary. Hvilken rolle spiller det i denne forbindelse?
Det der undrer mig er at det faktisk ikke ser ud til at spille nogen som helst rolle, for dokumentet bliver rigtigt også når det sendes som ASCII - men det burde det vel ikke, for ASCII indeholder jo ikke disse tegn - eller hvad har jeg misforstået?
Det viser sig også at W3C's validator under alle omstændigheder opfatter dokumentet som us-ascii. Fordi:
The HTTP Content-Type header (text/xml) sent by your web server (Apache/1.3.29 (Unix) mod_perl/1.27 FrontPage/5.0.2.2623 PHP/4.3.11 PHP-CGI/0.1b) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types.
The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere.
If you would like to use a different encoding, you should arrange to have your server send this new encoding information.
for FTP er forskellen på ASCII og BINARY primært håndteringen af linieskift
din XML fil skal sendes som ASCII uanset om den er i karaktersæt US-ASCII, UTF-8 eller ISO-8859-1 fordi det er en tekst fil med linier
----
de er lidt vanskelige - tilsyneladende insisterer de på at få angiver charset i en HTTP header - hvis det er dig egen web server så er det vel ikke noget problem - web hotel kan være et problem
det er netop et web hotel. Og hvad er det så der er forskellen mellem ascii og binary ved linjeskift? Jeg har forstået at ved asscii (i Microsoft Notepad i alle fald) indsættes både en newline (\n) og en carriage-return (\r). Hvad gør ftp programmet i forhold til disse tegn, når filen sendes binary?
hvis du laver en fil i notepad med \r\n linieskift og FTP'er den til en Unix maskine som ASCII så vil du få en tekst fil med samme logiske indhold men lidt færre bytes fordi linieskift kun er \n
hvis du FTP'er som BINARY så vil du få præcis samme antal bytes, men hvis du kigger på filen i en editor så vil du have en \r sidst i alle linierne (fordi kun \n opfattes som linieskift)
derfor er ASCII godt til tektfiler og BINARY absolut krævet til binære filer som ikke er linie orienteret
ok, det forstår jeg. Man spørger sig så, hvorfor Notepad i det hele taget indsætter en \r. Hvad skal det til for, når det alligevel kun er \n der laver et linjeskift?
Som jeg har forstået det er begge tegn en repræsentation af den gammeldags skrivemaskines taste-/håndtagsbevægelser. Og jeg gætter på at \r repræsenterer tryk på Returtasten (der på skrivemaskinen også automatisk udløser en linefeed - altså at valsen drejes nogle hak), og at \n repræsenterer det at bevæge linefeed-håndtaget (der kun drejer valsen men uden at føre skrivepunktet retur til starten af linjen). Hvis det er sådan, forstår man også hvorfor det sådan set er korrekt at have både \n og \r. Hvis man kun har \n, svarer det til at den ny linje bare starter der (horisontalt) hvor den forrige linje sluttede. Så logisk må rækkefølgen være det jeg lige før IKKE gættede på, nemlig: \n\r - altså først linefeed og så retur til starten af linjen - hvilket passer med at \n har lavere talværdi (10) end \r (13).
Jeg tænker bare højt her. Er det sådan det hænger sammen?
mik789 >> din skrivemaskine analogi er faktisk helt fin ... du uddrog bare den forkerte konklusion :)
På en gammeldags skrivemaskine, tager man fat i returhåndtaget og fører det mod venstre. Derved føres valsen tilbage, så der igen kan skrives fra venstre margin ('Return' eller '\r'). Når valsen er helt i bund i venstre side, føres håndtaget en tak længere mod venstre, hvilket medfører, at valsen ruller - svarende til et linjeskift ('\n').
ole> yes, OK, jeg forstår det. Der ER visse fordele ved ikke at være ung (selv om alle påstår noget andet) - bl.a. at man stadig kan huske hvordan en skrivemaskine fungerer. ;-)
ah, hmmn, måske vi lige kom lidt for langt med tidsmaskinen her... SÅ gammel er jeg dog ikke endnu.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.