我注意到JavaFX,JDK 1.8.0_131将Windows(7)上的控制字符显示为不同的符号。
Pasting this to IntelliJ sees a similar result,所以它似乎是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();
}
}
答案 0 :(得分:0)
Ascii仅定义128个字符,即单词的前7位。在128以上,开发人员看到了使用这些&#34;空的&#34;更有用的字符。但是,thousands of developers had this same idea without any real standardization。因此,您所看到的可能是您呈现的特定于语言环境的编码。
确保解码文本的编码,然后重新编码为utf-8。
答案 1 :(得分:0)
我还没有发现如何更改它,但它似乎是Windows内部更深层次的设置,它回归到Windows-1252:在该charset中,一些控制字符被映射到可见字符,从我的问题中可以看出。这&#34;问题&#34;似乎出现在每个Windows程序中,例如也在记事本中。