使用java读古吉拉特语文件,但得到“?”

时间:2016-10-19 03:03:16

标签: java file unicode

我正在使用java读取一个使用unicode的文件。

这是我的档案:enter image description here

它的编码说unicode。 enter image description here

但每当我尝试在java中使用UTF-8或UTF-16读取它时,它会正确读取英语单词,但无法读取古吉拉特语中的其他单词。它给 ?????只要。我有同样的问题,我问过here。但没有人回答,所以改变了我的做法。我从具有列nvarchar(用于古吉拉特语)的MS SQL数据库中读取数据并将其存储在一个文件中,现在尝试使用java从文件中读取数据。但仍然没有得到它。

我尝试将我的文件的编码更改为UTF-8和unicode big endian,我尝试了所有unicode formats supported in java8但没有得到所需的结果。

这是我的java代码:

File fileDir = new File("C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python35\\data.txt");

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileDir),"UTF-16"));

String str;

while ((str = in.readLine()) != null) {
    System.out.println(str);
}

in.close();

我通过套接字连接将此数据导向我的Android应用程序。我试图在textview上显示它,但它也给了我一个“???”迹象.. 我尝试用textview.setText("તારુ નામ શુ છે ?")直接在textview上显示古吉拉特语,它显示正确!!! ..

当我尝试通过套接字连接从java发送硬编码字符串时(String与上面写的相同)会引发此错误:

  

fileread.java:23:错误:编码Cp1252的不可映射字符                   ds.writeBytes(“α¬ñα¬╛α¬░α½?નα¬╛ᬫα¬╢α½?છα½ç?”);

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用System.out.println。它使用平台编码,但不会得到支持。

尝试使用PrintStream,它应该可以工作。您可以使用以下命令配置PrintStream:

PrintStream ps = new PrintStream(System.out, true, "UTF-8");

(我也认为UTF-8应该为你做。)