我通过Pascal创建了一个简单的程序,将unicode字符串显示到控制台屏幕。
我使用 SetConsoleOutputCP(CP_UTF8)并且它正常工作。
但是当我将CRT单元添加到我的程序时,它有一个问题:控制台代码页无法更改。
我尝试使用
Swapvectors;
Exec('Cmd','/c chcp 65001');
Swapvectors;
和
{$Codepage UTF8}
但它也有错误。请给我一个解决这个问题的方法。感谢。
(我正在使用Lazarus IDE)
答案 0 :(得分:4)
简单的答案是:你不能。
Unit Crt是一个旧的DOS残余,是在多字节字符集或UTF-8之前发明的。手册的介绍页面说明如下:
CRT单元来自TP / Dos区域。它设计用于单字节字符集,其中1个字符= 1个字节。这意味着宽字符串或 UTF-8编码(ansi)字符串将无法正常工作。
(突出我的)