You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Cmd/PowerShell中用Pascal输出Emoji表情

问题:FreePascal输出Emoji到控制台显示乱码

根据对应表格,微笑Emoji的UTF-8编码为F0 9F 98 81。我尝试用以下Pascal代码将其输出到控制台,但显示乱码≡ƒÿü:

Program emojii;

{$apptype CONSOLE}

Begin
  WriteLn(#$F0#$9F#$98#$81);
End.

我的环境信息:

  • 使用支持Emoji的Windows Terminal PowerShell(截图如下)
    支持Emoji的Windows Terminal PowerShell
  • FreePascal版本:Free Pascal Compiler version 3.2.2 [2024/02/26] for x86_64
  • 编译命令:fpc emojii.pas

解决方法

FreePascal默认控制台输出采用系统ANSI编码,而非UTF-8,导致Emoji的UTF-8编码被错误解析为乱码。可通过以下两种方式修复:

方法1:强制设置控制台输出为UTF-8

调用Windows API修改控制台输出代码页为UTF-8(代码页ID 65001),修改后的代码如下:

Program emojii;

{$apptype CONSOLE}
{$linklib kernel32}

function SetConsoleOutputCP(wCodePageID: Word): Boolean; stdcall; external 'kernel32.dll';

Begin
  SetConsoleOutputCP(65001);
  WriteLn(#$F0#$9F#$98#$81);
End.

方法2:直接使用Unicode码点或UTF-8字符串输出

指定源文件编码为UTF-8后,可直接使用Emoji的Unicode码点或字符输出:

Program emojii;

{$apptype CONSOLE}
{$codepage UTF8}

Begin
  // 方式一:使用Unicode码点
  WriteLn(#$1F601);
  // 方式二:直接写入Emoji字符(需确保源文件以UTF-8保存)
  WriteLn('😁');
End.

内容的提问来源于stack exchange,提问作者BugHunterUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:03:15