您需要以某种方式将俄语字符从 Java 发送到剪贴板,但输出中出现了一些可怕的东西。
go.pasteRus("/dump TradeSkillFrameEditBox:SetText(\"Трансмутация: извечная жизнь в тьму\")")
pasteRus (Java/Scala) 函数看起来像这样。
def pasteRus(message: String): Unit = {
val str = new java.lang.String(message.getBytes(StandardCharsets.UTF_8), Charset.forName("cp1251"));
val output = new StringSelection(str)
clipboard.setContents(output, null)
在输出中我得到了一个可怕的异端,我已经尝试了官方手册中的所有编码 - https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
/dump TradeSkillFrameEditBox:SetText("Трансмутация: извечная жизнь в тьму")
有没有人有新的想法?
您需要首先回答您的文本是以什么编码编写的问题:
事实上,这就是您编写代码时编辑器使用何种编码的问题的答案。要么是CP-1251(Windows Cyrillic)要么是UTF-8,理论上当然可以是ISO-8859甚至CP-866(Windows终端)。好吧,假设它是 CP-1251。
第二个同样重要的问题是 AWT 应用程序输出文本的编码方式,CP-1251 或 UTF-8 选项也是可能的。
Locale
通常与安装在 JVM 中的默认设置相同。现在,当我们将您的文本发送到剪贴板时,必须将其重新编码为与应用程序的 AWT 编码相匹配的编码。你需要像这样转换(我不擅长 Scala):
例如:
convert(s, "cp1251", "utf-8") //перекодировка из кодировки Windows в UTF-8
然后收到的
String
必须发送到剪贴板