为什么根据您是否使用 unicode 转义,表情符号在 JavaFX 中的显示方式会有所不同?
var button = new Button("Toggle Pane >\u2699< >⚙️<");
- 在第一对括号中将放置一个齿轮表情符号,但在第二对括号中 - 将有一个齿轮表情符号和一个空矩形。
如果相同的 Java 字符串将打印到控制台而不是显示在 GUI 中,则不会有矩形。
源.java文件是UTF-8,您可以在Windows中按
Win+;
将表情符号粘贴到文本中。
在 Powershell 中也有区别:
"⚙️" | Format-Hex -Encoding utf32 | % HexBytes
# result: 99 26 00 00 0F FE 00 00
"`u{2699}" | Format-Hex -Encoding utf32 | % HexBytes
# result: 99 26 00 00
这是怎么回事?
表情符号后面的隐形符号是变体选择器。
Win+;
将其粘贴到表情符号之后的文本中。它是不可见的字符(在屏幕截图中选择),可以在粘贴表情符号后从源代码中删除或通过 "⚙️".charAt(0)
删除。
在 VSCode 中,您无法选择/删除第二个字符,因为插入符号将这对字符视为一个整体,但在 Notepad++ 中,您可以选择这个不可见的字符并将其删除。