[英]Why does JavaFX display some control characters?
我注意到JavaFX,JDK 1.8.0_131在Windows(7)上將控制字符顯示為不同的符號。
將其粘貼到IntelliJ會看到類似的結果 ,因此似乎是Font,但是我無法在非Java應用程序中使用Courier New再現相同的東西:
為什么會發生這種情況,我該如何改變這種行為?
復制:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class ControlCharsJavaFx extends Application {
public static void main(String[] args) {
ControlCharsJavaFx.launch(ControlCharsJavaFx.class);
}
@Override
public void start(Stage primaryStage) throws Exception {
TextField textfield = new TextField();
textfield.setStyle("-fx-font-size: 500%");
for (int i = 128; i <= 159; i++) {
textfield.setText(textfield.getText() + (char) i);
}
Scene test = new Scene(textfield);
primaryStage.setScene(test);
primaryStage.show();
}
}
Ascii僅定義128個字符,即單詞的前7位。 在128以上,開發人員看到了使用這些“空”字符獲得更有用功能的機會。 但是, 成千上萬的開發人員在沒有任何實際標准化的情況下也具有相同的想法 。 因此,您所看到的可能是正在呈現的特定於區域設置的編碼。
確保對文本的編碼進行解碼,然后將其重新編碼為utf-8。
我還沒有找到如何更改此設置的方法,但是它似乎是Windows內部的一個更深層次的設置,它可以追溯到Windows-1252:在該字符集中,某些控制字符被映射為可見字符,如以下所示。我的問題。 這個“問題”似乎出現在每個Windows程序中,例如也出現在記事本中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.