java – 读取文件和写入文件,其中包含UTF – 8(不同语言)的字符
发布时间:2020-12-15 00:56:53 所属栏目:Java 来源:网络整理
导读:我有一个文件,其中包含如下字符:“Joh 1:1?????????????????????????,????????????????????????????????????????????????????????????????????????????????????????????????????”“”“”“”“”“ www.unicode.org/charts/PDF/U0B80.pdf 当我使用以下代
我有一个文件,其中包含如下字符:“Joh 1:1?????????????????????????,????????????????????????????????????????????????????????????????????????????????????????????????????”“”“”“”“”“
www.unicode.org/charts/PDF/U0B80.pdf 当我使用以下代码时: bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out,"UTF8")); 输出是框和其他奇怪的字符,如下所示: “P = O?;<一条Y?;” 有人可以帮忙吗? 这些是完整的代码: File f=new File("E:bible.docx"); Reader decoded=new InputStreamReader(new FileInputStream(f),StandardCharsets.UTF_8); bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out,StandardCharsets.UTF_8)); char[] buffer = new char[1024]; int n; StringBuilder build=new StringBuilder(); while(true){ n=decoded.read(buffer); if(n<0){break;} build.append(buffer,n); bufferedWriter.write(buffer); } StringBuilder值显示UTF字符,但在窗口中显示时,它显示为框. 找到问题的答案!!! 解决方法
因为您的输出以UTF-8编码,但仍包含替换字符(U FFFD,),我相信当您读取数据时会出现问题.
确保您知道输入流使用的编码,并根据InputStreamReader设置编码.如果那是泰米尔语,我猜它可能是UTF-8.我不知道Java是否支持TACE-16.它看起来像这样…… StringBuilder buffer = new StringBuilder(); try (InputStream encoded = ...) { Reader decoded = new InputStreamReader(encoded,StandardCharsets.UTF_8); char[] buffer = new char[1024]; while (true) { int n = decoded.read(buffer); if (n < 0) break; buffer.append(buffer,n); } } String verse = buffer.toString(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |