使用java从sybase db读取数据时Linux上的特殊字符问题

时间:2015-08-11 13:01:47

标签: java linux

最初我们使用ASCII格式将数据存储在数据库中。 在阅读相同数据时,我使用getASCIIStream() ResultSet方法来避免字符集转换问题。这种方法在Windows环境中提供了正确的数据,但是当我在Linux环境中部署war文件时,它正在显示?标记而不是特殊字符。 例如:存储在数据库中的数据:§©µ

Windows环境中的检索值:§©µ

Linux环境中的检索值:���

以下是代码的快照:

Mapper.java

InputStream inputStream = resultSet.getAsciiStream("supplier_destination_operator");

下面是我用于将输入流转换为字符串的代码快照。

BufferedReader reader;
StringBuilder target = new StringBuilder();
int asciiVal;
if(inputStream != null) {
    try {
    reader = new BufferedReader(new InputStreamReader(inputStream));
    while((asciiVal = reader.read()) != -1){
    char ch = (char)asciiVal;
    target.append(ch);
    } catch(e){}
    return target.toString();
}

1 个答案:

答案 0 :(得分:0)

您可能需要检查Windows和Linux安装使用的默认字符集。只需打印Charset.defaultCharset()并查看值是否相同。

当您创建阅读器时,请明确传递Charset以使其真正与环境无关。