widzę problemu teraz z programem poniżej (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]);
}
}
i działa, że dzięki | Out-File -enc UTF8 foo.txt
daje bełkot:
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 .........
Zauważ, że fhex to narzędzie PSCX.
UPDATE: zorientowali się, jak uzyskać to do pracy:
$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
możesz dać próbkę tego, co próbujesz osiągnąć? Odpowiedź może być inna, jeśli używasz plików lub chcesz wyświetlić tylko niektóre dane na ekranie ... –
W jaki sposób mogę uczynić to bardziej zrozumiałym? "./program-that-outputs-utf8> 1.txt" - nie działa, "./program-that-outputs-utf8 | out-file -enc utf8 1.txt" - też nie działa. Dokładny program i dokładne dane nic ci nie powiedzą. – Andy
Ten komentarz czyni go bardziej przejrzystym. –