Huomasin pienen ongelma, kun talletin R:llä merkkijonon, niin skandit eivät tulostuneet oikein LOADP/W:llä:
T <- åäöabcÅÄÖ" writeLines(T, "t") R CUR-2,CUR-1 LOADP t Õõ÷abc+-Í LOADW t i§¸abc+-- Mutta: >START NOTEPAD t näyttää homman oikein. Kuten myös SHOW t + W. Järjestelmä on Win 64-bit. |
Administrator
|
Kokeile toimiiko: LOADP t / ENCODING= "Tyhjä" ENCODING muuntaa järjestelmän oletusmerkistöstä ja pitäisi silloin olla sama kuin writeLines():in käyttämä "current encoding". Kokeilepa samalla mikä merkistö sinulla on käytössä antamalla ENCODING-täsmennykselle eri arvoja (kokeile UTF-8, LATIN1 ja Windows-1252) ja kerro mikä antaa halutun tuloksen. Tuo auttaa selvittämään onko LOADW:hen jäänyt väärä muunto päälle (jos siis toimi oikein SHOW+W:llä). Niin ja jos joskus on tarvetta lukea vähän eksoottisempaakin tavaraa (jonka merkistön tiedät), niin LOADP:llä käyttäen ENCODING-täsmennystä pitäisi onnistua.. |
Tuossa kokeilut:
LOADP t / ENCODING= åäöabcÅÄÖ LOADP t / ENCODING=UTF-8 Õõ÷abc+-Í LOADP t / ENCODING=LATIN1 åäöabcÅÄÖ LOADP t / ENCODING=Windows-1252 åäöabcÅÄÖ Elikkäs LATIN1 ja Windows-1252 antavat halutun lopptuloksen. |
Ja hyvä toiminto tuo ENCODING, näiden kanssa joutuu aika usein "painimaan"...
|
Administrator
|
Lisäsin ENCODINGiin avainsanat systeemin oletuskonversioon, kun tyhjä täsmennys on vähän hassu. Eli versiosta 0.5.44 lähtien voi käyttää täsmennystä ENCODING=DEFAULT tai ENCODING=SYSTEM, jolloin tehdään systeemin oletuskonversio.
Lisäsin myös mahdollisuuden käyttää täsmennystä ENCODING=WIN lyhennyksenä pidemmälle muodolle ENCODING=Windows-1252. |
In reply to this post by Petri Palmu
Ohessa liitteenä on R:llä talletettu (windows-formaatin) .html-tiedosto, jota en pysty muuntamaan PRINTissä
- codes WIN2.BIN komennolla sellaiseen muotoon, että ääkköset tulisivat oikein. nTPKOKOL2.html Oikea formaatti onnistuu kuitenkin pikkusukrolla /WIN2S (sukro liitteenä) WIN2S.TUT Miksiköhän WIN2.BIN ei käännä oikein? t. Petri |
Administrator
|
Ensinnäkin ääkkösten käyttäminen html-tiedostoissa on riskialtista puuhaa, etenkin jos et HTML:ssä määrittele minkä koodiston mukaista tekstiä on luvassa. Turvallisinta olisi korvata ne suoraan HTML:n koodeilla, kuten ä ja ö. Ja jos olet käyttänyt jotain R-pakettia moisten tiedostojen tuottamiseen, niin kannattanee katsoa myös mitä sen yhteydessä on sanottu encoding-kysymyksistä. Jos jostain kumman syystä kuitenkin haluat PRINTillä tulostaa moisen tiedoston sisällön, niin ainakin seuraava toimi minulla ihan oikein (ilman codes:ia ääkköset eivät näkyneet halutulla tavalla): *PRINT A,END TO KOE.PS */OPEN KOE.PS * A %100 - codes WIN2.BIN - text nTPKOKOL2.html Jos tämä ei vastaa käyttötilannettasi, niin pitäisi olla tarkempi selostus siitä mitä olitkaan oikein tekemässä ja miten (mieluusti toistettavissa oleva esimerkki, jossa ongelma esiintyy). |
Joo tuo .html taulu oli ensin luotu R:n xtable():lla ja sitten talletettu .html-tiedostoksi R:n print():llä.
Esim: d <- data.frame(x=1:5, y=6:10) x <- xtable(d) print(x, type="html", file="d:/delete/test5.html") (huom. vaihtoehtoisesti voi myös tallettaa latex-muodosssa...) Ääkköset kyllä näkyvät ihan oikein, esim. kun avaa .html tiedoston raa'asti selaimella. Mutta PRINTin kohdalla tulee ongelma, jonka tosin pystyi taas hoitamaan tuolla /WIN2S sukrolla... en ainakaan heti löytänyt tuosta print ... xtable merkistökoodausmäärityksiä. Täytyy vielä tutkia... |
Administrator
|
Eiköhän xtable vain lisää metodin tuohon print:tiin, joten kannattaa katsoa nimenomaan xtable:n dokumentaatiota. Antamasi esimerkissä ei ole ääkkösiä, joten siitä ei ole hirveästi iloa testaamisen kannalta. Jos vaihtaa rivin d <- data.frame(x=1:5, y=6:10)muotoon d <- data.frame(x=1:5, y="åäöÅÄÖ")niin pääsee jo kokeilemaan. Ilmeisesti xtable käyttää oletuksena R:n "ympäristömerkistöä", koska em. esimerkin skandit näy ainakaan tässä Macillä edes selaimessa oikein. Näyttäisivät UTF-8 -muodolta. Siihen eivät auta myöskään codes tai tuo /WIN2S sukro. Kyseessä ei ole PRINTin ongelma, koska aikaisemmassani viestissäni kuvatulla tavalla codes toimi ihan oikein. Koititko toistaa tuon ehdotukseni? Ja suosittelen todella hoitamaan merkistökoodauksen lähtökohtaisesti oikein. Sekä codes että /WIN2S ovat ympäristöriippuvia puukotuksia, jos lähtötiedosto voi olla "mitä sattuu" (riippuen missä ympäristössä se tuotetaan). |
Administrator
|
Taitaa olla niin, että xtable:n file-parametrille on vaikeaa määrittää enconding:ia. Löytyi kuitenkin helppo ratkaisu eli tallennetaan sink():llä eikä file-parametrilla, jolloin encoding on helppo määrittää. Esim. Survolle sopivaan CP850-muotoon taulukon saa seuraavasti (eli ei tarvita edes codes -spesifikaatiota PRINTissä; jos kuitenkin haluat käyttää codes WIN2.BIN:iä, niin voit määrittää encoding="Latin1" tai encoding="Windows-1252"):
library(xtable) d <- data.frame(x=1:5, y="åäöÅÄÖ") x <- xtable(d) sink(file("test5.html", encoding = "CP850")) print(x, type="html") sink() Toimiiko näin tuotettu tiedosto PRINTin kanssa haluamallasi tavalla? Ja mitä oikein teet PRINTillä? Käytätkö sitä tässä tapauksessa HTML:n etkä PostScriptin tuottamiseen? |
Hieman kesti vastaus:
*R a,A * alibrary(xtable) *d <- data.frame(x=1:5, y="åäöÅÄÖ") *x <- xtable(d) *sink(file("test5.html", encoding = "CP850")) *print(x, type="html") Asink() * Joo eli käytän yleensä osana PRINTiä, mutta toisaalta taulukkoa voi käyttää sellaisenaan, ja esim. linkityksenä. *SHOW test5.html */OPEN t.html * *PRINT CUR+1,CUR+6 TO t.html - include NULL.DEV - codes WIN.BIN - text test5.html * print(x, type="html")
> sink() Muuten lopputulos on ok (selaimessa, joskin yo. merkit ovat väärin), mutta ko. test5.html -tiedostostapitäisi poistaa tuo >print(x,...) ja vikalta riviltä sink(). > print(x, type="html") x y 1 1 åäöÅÄÖ 2 2 åäöÅÄÖ 3 3 åäöÅÄÖ 4 4 åäöÅÄÖ 5 5 åäöÅÄÖ > sink() |
Free forum by Nabble | Edit this page |