[英]Read and write files with accents
我有一个XML格式的输入文件,它的格式正确,口音写得很好。 该文件是使用可以正常运行的PHP脚本创建的。 但是,当我读取XML文件并使用Java程序将其写入另一个XML时,它将放置奇怪的字符而不是带有重音符号的字符。
这是读取XML文件的方法:
public static String getArchivo(FileInputStream fileinputstream)
{
String s = null;
try
{
byte abyte0[] = new byte[1024];
int i = fileinputstream.read(abyte0);
if(i != -1)
{
s = new String(abyte0, 0, i);
for(int j = fileinputstream.read(abyte0); j != -1; j = fileinputstream.read(abyte0))
{
s = s + new String(abyte0, 0, j);
}
}
}
catch(IOException ioexception)
{
s = null;
}
return s;
}
由于文件是按字节读取的事实,如何将“坏”字节替换为带重音符号的正确字节? 如果每个字节读取这样的文件不是一个好主意,我该如何做得更好?
我需要的字符是:á,é,í,ó,ú,Á,É,Í,Ó,Ú,ñ,Ñ和°。
提前致谢
可能您正在读取带有UTF-8字符集的文件。 特殊字符不属于UTF-8字符集。 从UTF-8更改为UTF-16
就像是
InputStream in = ...
InputSource is = new InputSource(new InputStreamReader(in, "utf-16"));
正如Jordi正确地说的那样,utf-8之外没有特殊字符。 因此,请考虑将第一部分作为其他特殊字符的信息。
深入了解您的代码,我看到您读取了一个int并将其转换为String。 不要转换它。 读取字节和写入字节以确保数据不会更改。
读取文件时,最好使用utf-8编码
BufferedReader rd = new BufferedReader(new InputStreamReader(is, "utf-8"));
在写作中也使用utf-8
OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream(filePath, true), "utf-8");
这对我有用。
在vi编辑器或其他编辑器中读取文件时,将默认编码更改为utf-8
语言环境charmap LANG = zh_CN.UTF-8
使用Chaserset ISO 8859-1为我工作。 Kotlin的语法:
val inputStream : InputStream = FileInputStream(filePath)
val json = inputStream.bufferedReader(Charsets.ISO_8859_1).use { it.readText()}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.