This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
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 Android Security Essentials Live Lessons this week in the Android 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 ( 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:
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