解码UTF-8字符串,然后在8859-2中对斯洛伐克字母进行编码

时间:2017-10-02 08:20:48

标签: java encoding utf-8

我正在尝试将字符串翻译成斯洛伐克语字母(8859-2编码) 通过我创建的匹配表。 问题是一些字符实际上没有改变,输出字符串显示“?”对于一些斯洛伐克人来说。

我该怎么做? 我先做了类似的事情:

        File tempFile = File.createTempFile("buffer", ".tmp");
        FileWriter fw = new FileWriter(tempFile);
        Reader fr = new FileReader(fileOriginal);
        BufferedReader br = new BufferedReader(fr);

        while (br.ready()) {
            fw.write(br.readLine().replace("#/e#" , "ě").replace("#>E#" , "É")
        }

但有些字符未正确替换。

例如,在这个字符串中:“allo#> e#de#> E#”(只是一个例子), 它应该给我“alloědeÉ”,但它给了我“allo?de?”因为UTF-8无法识别这些字符。 我需要做什么才能让我的java程序识别它?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这样的事情对你有用吗?

BufferedReader br = new BufferedReader(new InputStreamReader(fr,"UTF-8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fw,"8859-2"));
while (br.ready()) {
    bw.write(br.readLine());
}

此代码读取以UTF-8编码的文件内容,并通过编码在8859-2中写入。