我正在使用java读取一个使用unicode的文件。
但每当我尝试在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(“α¬ñα¬╛α¬░α½?નα¬╛ᬫα¬╢α½?છα½ç?”);
答案 0 :(得分:0)
您的问题是您正在使用System.out.println。它使用平台编码,但不会得到支持。
尝试使用PrintStream,它应该可以工作。您可以使用以下命令配置PrintStream:
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
(我也认为UTF-8应该为你做。)