wood burning stoves 2.0*
The moose likes Beginning Java and the fly likes writing unicode to a file Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "writing unicode to a file" Watch "writing unicode to a file" New topic

writing unicode to a file

Jack Lord

Joined: Jun 04, 2004
Posts: 11
I'm writing a program to help me learn the Nigerian language Hausa. It uses lots of non-standard characters (hooked-k etc) and although I can display them in a GUI alright, it all goes wrong when I write and read them to and from a file. Then the non-standard letters just get displayed as ?, so I get lots of words that look like ?ar?ashin, which isn't very helpful. I assumed that since Java uses Unicode internally, it would also use it when writing to a file. Is that wrong, or have I messed up my reader and writer classes?


Jimmy Die
Ranch Hand

Joined: Nov 20, 2003
Posts: 97

Thou shalt never assume!

When you write strings to a stream a character data, by default the unicode characters ar converted to the local representation of chars in the host machine, and these are then written to the stream. When you read a string it converts it back.

Check your java documentation regarding the character sets (java.io) you can set in your writing and reading, otherwise the default is making conversions between Unicode and what ever your machine is using.

Jimmy Die
Layne Lund
Ranch Hand

Joined: Dec 06, 2001
Posts: 3061
You probably need to create a FileInputStream and specify the exact character set you wish to use. As Jimmy says, FileReader uses the system's default character set. With a little bit of work, you can still create a BufferedReader from the FileInputStream you use. You'll probably need InputStreamReader somewhere in there.



Java API Documentation
The Java Tutorial
Jack Lord

Joined: Jun 04, 2004
Posts: 11
Thanks for pointing me in the right direction. In the end I used and similar for the writer class. It seems to work, so it'll do fine until someone points out how terrible it is . I was really pleased with the way my program was coming along while I was just testing the input/output stuff on the console - then I hooked it up to the GUI and got very depressed. Now I'm all optimistic again: so thanks for cheering me up!
I agree. Here's the link: http://aspose.com/file-tools
subject: writing unicode to a file
Similar Threads
Java Collections and the Iterator Pattern
how can i count the blank lines in a text file using stream tokenizer?
should be simple....reading char...
StreamTokeniser Trouble