我们有一个Java项目和一个简单的逻辑,用于从前端上传带有用户名和一些数据(电话号码,ID号等)的txt文件,有些名称有UTF-8字符,如ü,ə,ö (阿塞拜疆语)。当我从我的语言环境系统(Windows 8.1,Netbeans 8,Java 1.8)解析文件时,所有字符都在用户的浏览器中正确显示。但在将项目部署到服务器(Red Hat,Java 1.8)之后,Ə字符显示为问号。这是我的代码:
for (byte[] value : file) {
try {
Charset.availableCharsets().get("UTF-8").newDecoder().decode(ByteBuffer.wrap(value));
decodedString += new String(value, "UTF-8"); // 1
} catch (CharacterCodingException e) {
decodedString += new String(value, Charset.forName("cp866")); // 2
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(AllotmentItem.class.getName()).log(Level.SEVERE, null, ex);
}
}
在这段代码中,我检查的是UTF-8格式(1)或CP866(2)中的文件,如果是UTF,那么我只是连接它,否则我将符号转换为utf-8(另一个代码部分) )。我无法理解为什么在linux中我会得到问号。
编辑: 当我在我的语言环境机器上调试时,在调试控制台中我得到带有问号的utf-8名称,但是在用户浏览器的最后阶段,everythig就可以了。
抱歉我的英文。