Tôi thấy vấn đề này bây giờ với chương trình dưới đây (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]);
}
}
Và chạy mà qua | Out-File -enc UTF8 foo.txt
đưa ra vô nghia:
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 .........
Lưu ý rằng fhex là một tiện ích PSCX.
UPDATE: đặn hiểu làm thế nào để có được điều này để làm việc:
$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
Nguồn
2010-05-25 15:04:01
Bạn có thể cho một ví dụ về những gì bạn đang cố gắng để đạt được? Câu trả lời có thể khác nếu bạn đang sử dụng tệp hoặc nếu bạn chỉ muốn hiển thị một số dữ liệu trên màn hình ... –
Làm cách nào tôi có thể làm rõ hơn? "./program-that-outputs-utf8> 1.txt" - không hoạt động, "./program-that-outputs-utf8 | out-file -enc utf8 1.txt" - không hoạt động. Chương trình chính xác và dữ liệu chính xác sẽ không cho bạn biết gì. – Andy
Nhận xét đó làm cho nó rõ ràng hơn. –