起因
最近在看SPSS數據庫怎么通過Java程序讀取相關內容,然后發現大家都是通過使用一個叫做spss-reader的工具包,Maven的依賴如下:
<dependency>
<groupId>com.bedatadriven.spss</groupId>
<artifactId>spss-reader</artifactId>
<version>1.3</version>
</dependency>
分析
然后我在使用的過程中發現讀取Case的中文結果的時候發現總是讀取不全間隔出現問號亂碼。
通過分析代碼發現,在處理像UTF-8中文三字節的情況下邏輯存在問題,我個人做了一些修改,目前測試問題不大。
使用
Github相關地址 https://github.com/meetzy/spss-reader
新的倉庫上Clone代碼 自行打包
public static void main(String[] args) throws IOException {
SpssDataFileReader reader = new SpssDataFileReader("xxx.sav");
while (reader.readNextCase()) {
for (SpssVariable variable : reader.getVariables()) {
if (variable.isNumeric()) {
System.out.print(reader.getDoubleValue(variable.getIndex()));
} else if (variable.isVeryLongString()) {
System.out.print(reader.getVeryLongStringValue(variable.getIndex()));
} else {
System.out.print(reader.getStringValue(variable.getIndex()));
}
}
System.out.println();
}
}
請教
由於並不實質性了解Spss 只是由問題本身發現並做了更改,如果有不妥之處,還請有關方面相關朋友、專家提供指導與幫助。