Citat:
Vet inte om du tycker att detta klarnat via de svar du ftt, d de ibland varit otydliga och delvis missvisande.
Javas fundamentala datatyp fr detta, char, representerar alltid Unicode. Ingenting annat. Javas String likas. Glm encodingformat helt hr. (*1)
Nr man av ngot skl vill hantera tecken utanfr dessa typers runtimelagring, i ex en fil, en ntverksstrm eller annat, s behver man omvandla dessa till ett transportformat. Frst hr kommer encoding och olika format in i bilden.
De metoder som omvandlar tecken till ett transportformat eller tvrtom omvandlar allts frn Unicode till ett encodingformat eller tillbaka. Vissa dr man anger format via metodparametrar och vissa med defaultformat. Detta r vl dokumenterat i javadoc:en fr Java Core API och vl vrt att kolla upp. Typen Charset anvnds fr encodingformat.
Encodingformatet UTF-16 r frvisso vldigt nra Unicode i sin lagring, men det r fortfarande 2 olika saker.
Med detta som grund s kan vi g igenom dina exempel steg fr steg:
Nej, den anvnder alltid Unicode. (*1)
Din myString r Unicode.
Anropet getBytes() ovan omvandlar frn Unicode till angivet format.
Din iso88591bytes r en array av bytes (inte tecken lngre) i encondingformatet "ISO-8859-1". (*2)
Konstruktorn ovan fr String omvandlar indata frn dess encodingformat till Unicode.
Din newMyString r Unicode.
DIn newString3 r Unicode.
(*1): De r specificerat i Javas sprkdefinition att det r Unicode som representeras i char och String. ven om det r teoretiskt mjligt att enl specifikationen fullflja definitionen och nd lagra tecken internt i en String i ngot annat format, s spelar det ingen roll. Alla metoder som jobbar med typen char i String, jobbar med Unicode i sitt grnsssnitt.
(*2): Detta frutsatt att plattformen accepterade det format du angav. Vissa format mste stdjas enl standarden, bland annat ISO-8859-1.
Javas fundamentala datatyp fr detta, char, representerar alltid Unicode. Ingenting annat. Javas String likas. Glm encodingformat helt hr. (*1)
Nr man av ngot skl vill hantera tecken utanfr dessa typers runtimelagring, i ex en fil, en ntverksstrm eller annat, s behver man omvandla dessa till ett transportformat. Frst hr kommer encoding och olika format in i bilden.
De metoder som omvandlar tecken till ett transportformat eller tvrtom omvandlar allts frn Unicode till ett encodingformat eller tillbaka. Vissa dr man anger format via metodparametrar och vissa med defaultformat. Detta r vl dokumenterat i javadoc:en fr Java Core API och vl vrt att kolla upp. Typen Charset anvnds fr encodingformat.
Encodingformatet UTF-16 r frvisso vldigt nra Unicode i sin lagring, men det r fortfarande 2 olika saker.
Med detta som grund s kan vi g igenom dina exempel steg fr steg:
Nej, den anvnder alltid Unicode. (*1)
Din myString r Unicode.
Anropet getBytes() ovan omvandlar frn Unicode till angivet format.
Din iso88591bytes r en array av bytes (inte tecken lngre) i encondingformatet "ISO-8859-1". (*2)
Konstruktorn ovan fr String omvandlar indata frn dess encodingformat till Unicode.
Din newMyString r Unicode.
DIn newString3 r Unicode.
(*1): De r specificerat i Javas sprkdefinition att det r Unicode som representeras i char och String. ven om det r teoretiskt mjligt att enl specifikationen fullflja definitionen och nd lagra tecken internt i en String i ngot annat format, s spelar det ingen roll. Alla metoder som jobbar med typen char i String, jobbar med Unicode i sitt grnsssnitt.
(*2): Detta frutsatt att plattformen accepterade det format du angav. Vissa format mste stdjas enl standarden, bland annat ISO-8859-1.
Tack fr ett bra svar.
Har gjort en workaround som tycks fungera, s case closed och tack till alla som har gett input till mig i denna trd.
Om ngon undrar vad min workaround r s har jag lagt till en extra codepage-converter process som skerstller att jag fr ut min nskade encoding.