Java CP1252至UTF8

时间:2018-10-05 14:08:03

标签: java excel apache character-encoding apache-poi

我有一个电子表格(.xls),其中的车牌号编码为Windows-1252,但最初这些数字是用西里尔字母输入的,以UTF-8编码。我的意思是: 即西里尔文的У992НВ与拉丁文的Y992HB相同(首字母之间存在差异) 因此,我将这些数字转换为

 if (cell.getCellType() == CellType.STRING) {
                    String cellValue = cell.getStringCellValue();
                    try {
                        byte[] b = cellValue.getBytes("windows-1252");
                        String cellValue2 = new String(b, StandardCharsets.UTF_8);
                        cell.setCellValue(cellValue2);
                    }
                    catch ( UnsupportedEncodingException ex) {

                    }

但是,输出错误。 Windows-1252中的输入数据为“ Т313ÐК777”,而输出为Т313�К777,因为中间的符号不可读。 我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

  1. Java的字节不是字节。因此逐字节解码不起作用。
  2. 我解析了符号dex值,并尝试通过将值与UTF8匹配来对其进行解码。 一些值仅等效于UTF-8 latin-1。 我找到了用于python的软件包,用于解码损坏的UTF-8。有用。 但: 它不适用于jython 2.7,因为维护人员放弃了对Python 2.7的支持

感谢您的帮助。