1
votes

We are making some code change to our production code.

In this, earlier we used a InputStream (Basically a FileInputStream) for reading a file from file path and this InputStream is passed to many methods ahead.

Now we realized, the file can contain chinese characters also, so we want to use UTF-8 encoding.

I have a file path in string. And know, sometimes the file can contain chinese character and sometimes not.

I am reluctant to make changes in so many methods and was trying to somehow use UTF-8 encoding while creating InputStream (FileInputStream).

I searched on internet but all I could get is output in bufferreader/inputstream reader (like example Reading InputStream as UTF-8 or http://www.mkyong.com/java/how-to-read-utf-8-encoded-data-from-a-file-java/

So is it possible to read a file from file path and also handle chinese characters and convert it in InputStram?

1

1 Answers

5
votes

An InputStream does not handle text, so it does not care about the encoding, so the direct answer to your question is: no, you can't create an InputStream with UTF-8 encoding.

You can however handle UTF-8 files just fine with an InputStream by simply carrying the bytes around and never manipulating them in any way.

If you want to read text from a file you need to construct a Reader and then you'll need to specify the encoding (UTF-8 for you) in the constructor.

If you show us the point where data from the InputStream gets turned into String or char[] objects, then I can show you the place where you need to change your code.