Tôi đang cố in các ký tự tiếng Trung từ tệp PDF được tạo bởi quy trình exe (phantomjs). Tuy nhiên, những ký tự này cuối cùng lại là "?". Quá trình này được tạo với vai trò công nhân trong C#.
Khi tạo quy trình tương tự theo cách thủ công trong cửa sổ cmd trên cùng một máy ảo, mọi thứ đều hoạt động tốt.
Tuy nhiên, gói ngôn ngữ tiếng Trung đã được cài đặt từ cùng một tài khoản quản trị viên có thể tạo thành công tệp PDF theo cách thủ công.
Để đảm bảo rằng tất cả người dùng đều nhìn thấy cùng một phông chữ từ gói ngôn ngữ, tôi đã thêm cài đặt cho tất cả người dùng hệ thống trên máy như được mô tả ở đây .
Quá trình được bắt đầu từ C# như thế này
Process.Start (ProcessStartInfo mới
{
UseShellExecute = đúng,
Tên tệp = "phantomjs.exe",
Đối số = "pdf.js"
});
Tại sao quy trình cmd-window thủ công của tôi có thể sử dụng chính xác phông chữ tiếng Trung, nhưng quy trình bắt đầu bằng C# thì không thể?
Hóa ra mã hóa ký tự sai đã gây ra dấu chấm hỏi. Mọi thứ từ nội dung đầu vào đến tài liệu HTML và cài đặt đầu ra đều phải sử dụng mã hóa chính xác (chẳng hạn như UTF-8) trước khi chúng hoạt động bình thường.
Tôi là một lập trình viên xuất sắc, rất giỏi!