如何在windows下的cmd窗口中显示日语汉字?

jde*_*aan 15 windows console cmd utf-8

我有一个英文Windows 2003服务器,启用了亚洲语言支持.命令窗口可用的两种唯一字体(cmd设置)是raster和lucida console.这一个或另一个都没有正确显示汉字(显示为问号).

是否有解决方案让它们显示出来?在写入控制台之前,我的应用程序中是否必须进行一些转换?

我现在正在写UTF8,对于一些非ASCII字符(如öäüß)也有效.写入控制台的源代码具有正确的数据(可以在调试器中正确查看汉字).如果重要,我正在用C#编写应用程序.

编辑:我发现这个链接解释了问题背后的问题,并为C#提供了一个解决方案(涉及本机调用).这适用于.NET 4.5(我未经测试)

小智 6

如果找到将显示汉字字符集的字体,则可以通过在此注册表项下添加值将该字体添加到cmd设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont\
Run Code Online (Sandbox Code Playgroud)

价值观:

Name: 00
Data: Consolas
Run Code Online (Sandbox Code Playgroud)

我以前做过这个,但在SuperUser上找到了这个参考:https://superuser.com/q/55318

希望这可以帮助

  • 事实证明,尽管编码正确,但控制台无法始终正确显示字符(以框或询问标记结尾),具体取决于所使用的字体。所以字体设置对于东西的正常工作是必不可少的。 (3认同)
  • 我不知道这是如何回答这个问题的.什么是"名称:00数据:Consolas"?为什么这是公认的答案? (2认同)

bob*_*nce 5

您的应用程序编写输出如何?基于 C 字节的 stdio 调用printf在 Windows 上将不支持 UTF-8,除非您通过说chcp 65001 && somecommand(即使这样也有问题)专门将控制台设置为使用 UTF-8 编码。

如果没有chcp,控制台将使用 Windows 安装的默认代码页,在本例中为 cp1252,即使您使用的控制台字体具有字形,也无法使用汉字书写。

如果您想将 Unicode 可靠地写入控制台,则必须使用基于字符的接口,例如wprintf.

  • `cmd.exe` * 可以* 显示 Unicode 字符,但前提是它正在运行的进程通过 `wprintf` 或 Win32 `WriteConsoleW` 传递 Unicode 字符。然而,大多数命令行软件使用 C stdio 基于字节的输出函数,如 `printf`,所以你会受到代码页的限制。非常不幸的是,在 Windows 上,系统默认代码页永远不会是 65001 (UTF-8),而且设置 `chcp 65001` 存在一些严重的错误。所有其他操作系统都采用 UTF-8 标准化,允许任何旧的基于字节的控制台应用程序使用 Unicode 做一些有意义的事情。 (4认同)