当前位置: 首页 > 面试题库 >

Windows控制台中的西里尔字母(java)System.out.println();

范凡
2023-03-14
问题内容

当我写一些西里尔字母的文字System.out.println(“Русскийязык”)-然后使用Windows控制台胜过此╨єёёъшщч√ъ时,该如何解决?文件编码为utf-8,但是没关系,当它是ansii或Windows-1251时,它的输出相同。


问题答案:
import java.io.PrintStream;
class Kyrill {
    public static void main(String args[])
        throws java.io.UnsupportedEncodingException
    {
        String ru = "Русский язык";
        PrintStream ps = new PrintStream(System.out, true, "UTF-8");
        System.out.println(ru.length());
        System.out.println(ru);
        ps.println(ru);
    }
}

D:\Temp :: chcp 65001
Aktive Codepage: 65001.

D:\Temp :: javac -encoding utf-8 Kyrill.java && java Kyrill
12
??????? ????
Русский языкй язык

请注意,您可能会在输出中看到一些尾随的垃圾(我确实如此),但是如果将输出重定向到文件,则会看到这只是一个显示伪像。

因此,您可以使用PrintStream使其工作。该System.out中使用该平台的编码(CP1252对我来说),而且没有西里尔字母。

供您使用编码业务的其他说明:

D:\Temp :: chcp 1251
Aktive Codepage: 1251.
:: This is another codepage (8 bits only) that maps bytes to cyrillic characters.
:: Edit the source file to have:
::      PrintStream ps = new PrintStream(System.out, true, "Windows-1251");
:: We intend to match the console output; else we won't get the expected result.
D:\Temp :: javac -encoding utf-8 Kyrill.java && java Kyrill
12
??????? ????
Русский язык

因此,您会发现与某些人的看法相反,Windows控制台在偶然的意义上 确实会破坏Unicode ,因为它可以打印希腊语和俄语。



 类似资料:
  • 如何使其在输出俄语时,输出俄语字母,而不是�� ����� �������� �����! 它不仅在控制台中工作,而且在终端中一切正常 我试过这个 > 窗口 还有这个 窗户- 还有这个 在eclipse主目录中打开eclipse.ini,或者在STS(Spring Tool Suite)的情况下打开STS. ini,将下面的行放在文件末尾-Dfile.encoding=UTF-8 但还是做不到。请

  • 问题内容: 我正在尝试使用php的函数json_encode将西里尔UTF-8数组编码为JSON字符串。示例代码如下所示: 它工作正常,但脚本的结果表示为: 每个西里尔字母组成6个字符。有没有一种方法可以获取键/值对的原始字符,而不是编码的字符? 问题答案: 您不能在此处使用JSON_UNESCAPED_UNICODE常量吗?

  • 问题内容: 这个问题已经在这里有了答案 : UTF-8贯穿始终 (15个答案) 5个月前关闭。 我正在尝试在MySQL表中插入一个西里尔字母值,但是编码存在问题。 Php: MySQL: 注意:PHP文件为,数据库排序规则 问题答案: 您在这里混的API,并且不混合。您应该坚持使用(无论如何看起来还是这样),因为不赞成使用函数,并且在PHP7中将其完全删除了。 您的实际问题是某个地方的字符集问题。

  • 问题内容: 以下代码 在Windows下的Java控制台上,在“开始”和“结束”之间产生一个空行,但是在运行MacOS或Linux时可以正常工作。写入文件而不是使用sysout时同样如此。我试过多台Windows机器。我是通过eclipse还是通过cmd执行该方法都没有关系。 当您将“ 1234”更改为“ 1234”或“ 12g4”时,或者运行次数大于/小于936时,它将在所有OS上正常工作。 任

  • 问题内容: 我们尝试在Windows上使用Java和UTF-8。该应用程序在控制台上写入日志,我们希望对日志使用UTF-8,因为我们的应用程序具有国际化的日志。 可以配置JVM,使其使用JVM的参数生成UTF-8 。它工作正常,但Windows控制台上的输出出现乱码。 然后,我们可以将控制台的代码页设置为65001(),但是在这种情况下,文件将无法工作。这意味着当我们尝试通过脚本(名为start.

  • 问题内容: 当用户在数据库中插入俄语单词如“锌褉松弛屑械Russian”时,数据库将其保存为“ ??????”。如果他们以’N’字母插入,或者我以’N’字母进行选择,即;exec Table_Name N’没有问题。但是我不想在每个查询中都使用“ N”,因此对此有什么解决方案吗?顺便说一下,我将使用存储过程。 更新: 现在,我可以使用带有排序规则的俄语字母。但是我无法更改每种语言的排序规则,我只想