我在阅读带有特殊字符的文件时遇到问题。我的.txt文件有数据:
我正在使用以下代码阅读此文件:
StringBuilder sBuilderString = new StringBuilder();
for (int n; (n = loInputStream.read()) != -1;) {
sBuilderString.append((char)n);
}
此字符串现在再次用于写入文件,问题是当我写文件时,这两个字符中的一个被其他特殊字符替换。
如何编写能够读取所有特殊字符并将其写入另一个文件的代码?
答案 0 :(得分:2)
您的角色编码存在问题。对'(char)n的调用将使用系统的默认字符编码将字节n有效地转换为字符,这可能与源文件的编码不同。
避免这种情况的一种方法是将InputStream包装在CharacterInputStream中,您可以在其中指定字符编码:
Reader reader = new InputStreamReader( loInputStream, "UTF-8");
然后,您可以继续将您的流读入StringBuilder。我还建议使用bufferedReader包装读卡器,以提高阻塞IO流的性能。
Reader reader = new BufferedReader(new InputStreamReader( loInputStream, "UTF-8"));
答案 1 :(得分:1)
使用InputStreamReader并指定文件中使用的编码。