gpt4 book ai didi

java - 如何在 TableView 中设置编码

转载 作者:行者123 更新时间:2023-11-30 08:01:25 26 4
gpt4 key购买 nike

我的 TableView 不显示像 ä ö ü 这样的德语 Umlaut 虽然我的控制台显示了 Düsseldorf、Köln、München 等地的正确字符。

我是否必须在 tableView 中设置字符集等?

screenshot

举个例子

TableColumn<TextData, String> column;
TableView<TextData> table;
ObservableList<TextData> data = FXCollections.observableArrayList();

...
...
//part of main code
Task<ObservableList<TextData>> task = new Task() {

@Override
protected Object call() throws Exception {

IOFileOperations io = new IOFileOperations(fileName);
data = io.getData();
colNumSize=io.getNumberOfColumns();

Platform.runLater(new Runnable() {

@Override
public void run() {

for(int i=0;i<colNumSize;i++) {
final int x=i;
column = new TableColumn<>("["+x+"]");
//populate the columns with data
column.setCellValueFactory(cellData -> cellData.getValue().dataProperty(x));
table.getColumns().add(column);
}
table.setItems(data);
}
});
return null;
}
};
new Thread(task).start();

//method getData in class IOFileOperations
public ObservableList<TextData> getData() {
int numRow=results.length; //<-results a string of Array (String [][] results)
int numCol=results[0].length;
for(int i=0;i<numRow;i++) list.add(new TextData(i,numCol, results));
return list;
}

//class TextData
public class TextData {

public StringProperty [] dataValue;

public TextData(int row, int numCol, String loadedText [][]) {
this.dataValue = new StringProperty[numCol];
for(int i=0;i<numCol;i++) dataValue[i] = new SimpleStringProperty(loadedText[row][i]);
}
}

最佳答案

看起来问题出在您如何在此类 IOFileOperations 中读取数据

如果不包含这一点,我们将无法帮助您找出实现中的确切问题。
下面我提供了一个示例来重现问题,包括如何使用以下文本文件更正它:

Düsseldorf
Köln
München

这应该可以帮助您调试和更正您自己的实现


public class City {
private int id;
private String name;

public City(int id, String name){
this.id = id;
this.name = name;
}

public int getId() {
return id;
}

public String getName() {
return name;
}
}

读入数据:
请注意,在此步骤中,我们可以提供要使用的字符集。使用 UTF-8 时,一切都会按预期显示,但是如果您在注释行之间切换,则变音符号将无法识别

ObservableList<City> data = FXCollections.observableArrayList();
File file = new File("test.txt");
//Charset charset = StandardCharsets.US_ASCII;
Charset charset = StandardCharsets.UTF_8;
int currentId = 0;

try(BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(file), charset))) {
String line = reader.readLine();

while (line != null) {
data.add(new City(currentId, line));
line = reader.readLine();
currentId++;
}
}

并设置 TableView:

TableView<City> tableView = new TableView();
TableColumn idColumn = new TableColumn("Id");
idColumn.setCellValueFactory(
new PropertyValueFactory<>("id"));
TableColumn cityColumn = new TableColumn("City");
cityColumn.setCellValueFactory(
new PropertyValueFactory<>("name"));

tableView.getColumns().setAll(idColumn, cityColumn);
tableView.getItems().addAll(data);


字符集之间的区别:

enter image description here enter image description here

关于java - 如何在 TableView 中设置编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com