Unicode og streams
Jeg har lavet en font med nogle karaktere der ligger ud over ASCII rækken (over 255). Den vil jeg nu gerne skrive ned på disk. Men når jeg bruger Writer funktionen bliver alle karaktere over 255 og 253, 254 gemt som 63. Hver karakter fylder også kun en byte i filen. Jeg mente ellers at nettop Writer funktione arbejden med java (2 byte) unicode karaktere. Hvordan for jeg dette til at virke? (Har også prøvet med OutputStreamWriter of DataOutputStream uden held)Kode eksempel:
import java.io.BufferedWriter;
import java.io.FileWriter;
class IOSave extends IO
{
private BufferedWriter bufferedWriter;
private String fileName;
private String data;
IOSave(String fileName, String data)
{
this.fileName = fileName;
this.data = data;
initilize();
writeData();
}
private void initilize()
{
try
{
bufferedWriter = new BufferedWriter(new FileWriter(fileName));
}
catch(java.io.IOException e)
{
return;
}
}
private void writeData()
{
try
{
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
}
catch(java.io.IOException e)
{
return;
}
}
}
-------------------
MED OutputStreamWriter
-------------------
import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
class IOSave
{
private OutputStreamWriter outputStreamWriter;
private String fileName;
private String data;
IOSave(String fileName, String data)
{
this.fileName = fileName;
this.data = data;
initilize();
writeData();
}
private void initilize()
{
try
{
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(fileName));
}
catch(java.io.IOException e)
{
return;
}
}
private void writeData()
{
try
{
outputStreamWriter.write(data);
outputStreamWriter.flush();
outputStreamWriter.close();
}
catch(java.io.IOException e)
{
return;
}
}
}
-------------------
MED DataOutputStream
-------------------
import java.io.DataOutputStream;
import java.io.FileOutputStream;
class IOSave
{
private DataOutputStream dataOutputStream;
private String fileName;
private String data;
IOSave(String fileName, String data)
{
Debug.debugNewObject(\"IOSave\");
this.fileName = fileName;
this.data = data;
initilize();
writeData();
}
private void initilize()
{
try
{
dataOutputStream = new DataOutputStream(new FileOutputStream(fileName));
}
catch(java.io.IOException e)
{
return;
}
}
private void writeData()
{
try
{
dataOutputStream.writeChars(data);
dataOutputStream.flush();
dataOutputStream.close();
}
catch(java.io.IOException e)
{
return;
}
}
}
Argh!
Rune
