gpt4 book ai didi

encoding - 输入编码 : accepting UTF-8

转载 作者:行者123 更新时间:2023-12-04 11:16:51 24 4
gpt4 key购买 nike

我需要在 PowerShell 下获取 native 应用程序的输出。问题是,输出是用 UTF-8(无 BOM)编码的,PowerShell 无法识别,只是将那些时髦的 UTF 字符直接转换为 Unicode。

我发现 PowerShell 有 $OutputEncoding变量,但它似乎不影响输入数据。

好的 ol' iconv 也没有帮助,因为这种不必要的 UTF8-as-if-ASCII => Unicode 转换发生在下一个管道成员获取数据之前。

最佳答案

我现在看到以下程序的问题(stdout.cpp - cl stdout.cpp):

#include <stdio.h>

void main()
{
char bytes[] = { 0x41, 0x53, 0x43, 0x49,
0x49, 0x20, 0x6F, 0x75,
0x74, 0x70, 0x75, 0x74,
0xE1, 0xBE, 0xB9};

for (int i = 0; i < 15; i++)
{
printf("%c", bytes[i]);
}
}

并通过 | Out-File -enc UTF8 foo.txt 运行它胡言乱语:
PS> fhex foo.txt

Address: 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII
-------- ----------------------------------------------- ----------------
00000000 EF BB BF 41 53 43 49 49 20 6F 75 74 70 75 74 0D ...ASCII output.
00000010 9F E2 95 9B E2 95 A3 0D 0A .........

注意 fhex 是 PSCX公用事业。

更新:想出如何让它工作:
$enc = [Console]::OutputEncoding
[Console]::OutputEncoding = [text.encoding]::utf8
.\stdout.exe | out-file fubar3.txt -enc utf8
fhex .\fubar3.txt

Address: 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII
-------- ----------------------------------------------- ----------------
00000000 EF BB BF 41 53 43 49 49 20 6F 75 74 70 75 74 E1 ...ASCII output.
00000010 BE B9 0D 0A ....

[Console]::OutputEncoding = $enc

关于encoding - 输入编码 : accepting UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2902874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com